package visiopuce.ui.view;

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map.Entry;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.nebula.widgets.formattedtext.DateFormatter;
import org.eclipse.nebula.widgets.formattedtext.FormattedText;
import org.eclipse.nebula.widgets.formattedtext.NumberFormatter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.wb.swt.SWTResourceManager;

import visiopuce.ApplicationContexte;
import visiopuce.DAO.PrelevementDAOImpl;
import visiopuce.objets.Alteration;
import visiopuce.objets.Analyse;
import visiopuce.objets.Bande;
import visiopuce.objets.Champ;
import visiopuce.objets.ExpFish;
import visiopuce.objets.Personne;
import visiopuce.objets.Prelevement;
import visiopuce.objets.Puce;
import visiopuce.objets.RenduBiomol;
import visiopuce.objets.RenduFish;
import visiopuce.objets.RenduPuce;
import visiopuce.objets.Resultat;
import visiopuce.objets.Secteur;
import visiopuce.objets.TypeAnalyse;
import visiopuce.objets.TypePlanExp;
import visiopuce.objets.TypeRendu;
import visiopuce.objets.Utilisateur;
import visiopuce.objets.VerifBiomol;
import visiopuce.objets.VerifFish;
import visiopuce.objets.ZoneTesteeBiomol;
import visiopuce.service.AnalyseServiceImpl;
import visiopuce.service.DroitServiceImpl;
import visiopuce.service.PersonneServiceImpl;
import visiopuce.service.PrelevementServiceImpl;
import visiopuce.service.PuceServiceImpl;
import visiopuce.service.ReferentielServiceImpl;
import visiopuce.service.ResultatServiceImpl;
import visiopuce.service.UtilisateurServiceImpl;
import visiopuce.service.document.CompteRenduPuce;
import visiopuce.service.document.ResultatBiomol;
import visiopuce.service.document.ResultatCaryo;
import visiopuce.service.document.ResultatEchecPuce;
import visiopuce.service.document.ResultatFISH;
import visiopuce.service.document.ResultatFISHNonPuce;
import visiopuce.service.document.ResultatPuce;
import visiopuce.ui.CNVVerifie;
import visiopuce.ui.NbDialog;
import visiopuce.ui.providers.TypeAnalyseLabelProvider;
import visiopuce.ui.providers.TypePlanExpLabelProvider;
import visiopuce.ui.providers.TypeRenduLabelProvider;
import visiopuce.ui.providers.UtilisateurLabelProvider;

public class AnalyseTabItem implements IDossierTabItem<Analyse> {

	private Analyse analyse;
	private Resultat resultat;
	private TabItem analyseTabItem;
	private boolean isModifiable;

	// Champs d'une analyse
	private Button btnDossierUrgent;
	private ComboViewer comboTypeAnalyse;
	private Text tUrgent;

	// resultat
	private FormattedText dateRendu;
	private ComboViewer comboTypeRenduNb;
	private ComboViewer comboTypeRenduStr;
	private ComboViewer comboSignataire;
	private Button btnCheckMosaique;
	private Button btnRadioNonRendu;
	private Button btnRadioNormal;
	private Button btnRadioAnomal;
	private Button btnRadioEchec;
	private Button btnRadioAnnule;
	private Text tCommentaire;
	private Text tFormule;
	private ListViewer listViewer;
	private Composite composite;
	private Button btnRadioEquilibre;
	private Button btnRadioDesequilibre;
	private Composite compositeAnormal;
	private FormattedText dateTechnique;
	private FormattedText dVerification;

	private Button btnRadioHMere;
	private Button btnRadioHPere;
	private Button btnRadioH2;
	private Button btnRadioDeNovo;
	private Button btnRadioNonVerif;
	private Button[] btnCheckChromosome = new Button[24];

	private ModifyListener modifyListener;
	private SelectionAdapter selectionListener;
	private Button btnAjouterUnResultat;
	private Combo tUFExec;

	private SelectionAdapter selectionbtAnoListener;

	private Button btnGenererResultat;
	private Button btnGenererFormule;
	private Text tANoter;
	private Text tResolution;
	private ComboViewer comboTypePlanExp;
	private FormattedText dRedaction;
	private Puce puce;
	private Group grpVerifFish;
	private Group grpVerifqPCR;

	private HashMap<Integer, Group> groupeVerifFish = new HashMap<Integer, Group>();
	private HashMap<Integer, FormattedText> dRealisationFish = new HashMap<Integer, FormattedText>();
	private HashMap<Integer, Button> btConfirmeFish = new HashMap<Integer, Button>();
	private HashMap<Integer, Combo> comboOrigineParentaleFish = new HashMap<Integer, Combo>();
	private HashMap<Integer, Button> bAjouterSondeFish = new HashMap<Integer, Button>();
	private HashMap<Integer, Group> groupeSondeFish = new HashMap<Integer, Group>();

	private Group grpRsultats;
	private Button btnRedige;
	private Button btnVerifie;
	private ScrolledComposite sc1;
	private List<String> liens = new ArrayList<String>();
	private HashMap<Integer, Group> groupeVerifBM = new HashMap<Integer, Group>();
	private HashMap<Integer, FormattedText> dRealisationBM = new HashMap<Integer, FormattedText>();
	private HashMap<Integer, Text> tTechniqueBM = new HashMap<Integer, Text>();
	private HashMap<Integer, Group> groupePosqPCRDans = new HashMap<Integer, Group>();
	private HashMap<Integer, Group> groupePosqPCRHors = new HashMap<Integer, Group>();
	private HashMap<Integer, Text> tGeneRefqPCR = new HashMap<Integer, Text>();
	private HashMap<Integer, Combo> comboConfirmeBM = new HashMap<Integer, Combo>();
	private HashMap<Integer, Combo> comboOrigineParentaleBM = new HashMap<Integer, Combo>();
	private HashMap<Integer, Text> tGeneAVerifBM = new HashMap<Integer, Text>();
	private HashMap<Integer, FormattedText> tDebutAVqPCR = new HashMap<Integer, FormattedText>();
	private HashMap<Integer, FormattedText> tFinAVqPCR = new HashMap<Integer, FormattedText>();
	private HashMap<String, Text> tNomPosztb = new HashMap<String, Text>();
	private HashMap<String, Text> tExonPosztb = new HashMap<String, Text>();
	private HashMap<String, FormattedText> tDebutztb = new HashMap<String, FormattedText>();
	private HashMap<String, FormattedText> tFinztb = new HashMap<String, FormattedText>();
	private HashMap<String, FormattedText> tTailleztb = new HashMap<String, FormattedText>();
	private HashMap<String, Combo> comboAnoConfirmeeztb = new HashMap<String, Combo>();

	private HashMap<String, Text> tSonde1ef = new HashMap<String, Text>();
	private HashMap<String, Text> tlocSonde1ef = new HashMap<String, Text>();
	private HashMap<String, FormattedText> tNbSignauxSonde1ef = new HashMap<String, FormattedText>();
	private HashMap<String, Text> tSonde2ef = new HashMap<String, Text>();
	private HashMap<String, Text> tlocSonde2ef = new HashMap<String, Text>();
	private HashMap<String, Text> tVersion2ef = new HashMap<String, Text>();
	private HashMap<String, FormattedText> tNbSignauxSonde2ef = new HashMap<String, FormattedText>();
	private HashMap<String, FormattedText> tnbPhotoef = new HashMap<String, FormattedText>();
	private HashMap<String, FormattedText> tnbNoyauxef = new HashMap<String, FormattedText>();
	private HashMap<String, FormattedText> tnbMitoseef = new HashMap<String, FormattedText>();
	private HashMap<String, Button> bAnoConfirmeeef = new HashMap<String, Button>();

	private HashMap<Integer, Integer> nbsonde = new HashMap<Integer, Integer>();
	protected HashMap<Integer, Integer> nbzone = new HashMap<Integer, Integer>();

	private HashMap<Integer, Button> bAjouterZoneHorsBM = new HashMap<Integer, Button>();
	private HashMap<Integer, Button> bAjouterZoneDansBM = new HashMap<Integer, Button>();
	private Button btnCoherance;
	private Button btnParentOnt;
	private Button btnParentOntPas;
	private Button btnRechercheRemanChezParent;
	private RenduPuce renduPuce;
	private RenduBiomol rbm;
	private RenduFish rf;
	private List<VerifFish> lvf;
	private List<VerifBiomol> lvbm;
	private ComboViewer comboVerificateur;
	private HashMap<String, ExpFish> expFishs = new HashMap<String, ExpFish>();
	private HashMap<String, ZoneTesteeBiomol> ztbms = new HashMap<String, ZoneTesteeBiomol>();

	private ComboViewer comboTechnicienne;
	private ComboViewer comboTechMiseEnCult;
	private ComboViewer comboTechChoc;
	private ComboViewer comboTechEtalement;
	private ComboViewer comboTechDenat;

	final String[] detectes = new String[] { "Non détectée", "Détectée", "Ininterprétable" };

	private Combo tResolutionCaryo;
	private HashMap<String, Button> btnMarquage = new HashMap<String, Button>();
	private FormattedText tMitosesClassees;
	private FormattedText tMitosesExaminees;
	private FormattedText tColonies;
	private FormattedText tChambresCultures;
	private FormattedText tNbApresED;
	private FormattedText tNbApresCult;
	private FormattedText tNbMitoseFish;
	private FormattedText tNbNoyauxFish;
	private Text tSondeFish;
	private Text tMotifFish;
	private Group grpCaryotype;
	private Group grpFISH;
	private Group grpAnalyse;
	private Button btnGenererCompteRendu;

	private Combo cIndexMito;
	private Combo clChr;
	private Combo cCytoplasme;
	private Combo cMitosesEclat;
	private Combo cBandeR;
	private Combo cBandeG;
	private Combo tResolutionCaryoTech;
	private Text tFormuleTech;
	private Text tRemarqueTech;
	private Button btnAjouterVerifFish;
	private Button btnAjouterVerifBM;
	private Group grpRsultatsss;
	private Secteur secteur;
	private Button btnRadioNHMere;
	private Button btnRadioNHPere;
	private Button btnSigne;
	private Group grpMicroSat;
	private Combo comboContamination;
	private FormattedText tNbMqNonInfo;
	private Button btnRadioSexeF;
	private Button btnRadioSexeM;
	private Button btnRadioSexeNA;
	private FormattedText tNbMqInfo;
	private FormattedText tNbMqExclus;
	private ISelectionChangedListener selectionChangedListeResultat;

	private Button btnPlusFish;
	private Combo comboTypeFish;

	public AnalyseTabItem(TabFolder parent, int style, boolean modifiable) {
		analyseTabItem = new TabItem(parent, style);
		modifyListener = new ModifyListener() {

			public void modifyText(ModifyEvent e) {
				if (((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()) != null) {
					((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).setDirty(true);
				}
			}
		};
		selectionListener = new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).setDirty(true);
			}
		};
		selectionbtAnoListener = new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent e) {
				if (btnRadioAnomal.getSelection()) {
					createCompositeAnormal();
				} else {

					((GridData) compositeAnormal.getLayoutData()).exclude = !btnRadioAnomal.getSelection();
					compositeAnormal.setVisible(false);

				}
				compositeAnormal.pack();
				compositeAnormal.getParent().pack();
				composite.pack();
				sc1.redraw();
			}

		};

		selectionChangedListeResultat = new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
				Resultat r = (Resultat) selection.getFirstElement();
				if (r != null) {
					removeDirtyListener();
					resultat = r;
					renduPuce = ResultatServiceImpl.getInstance().getRenduPuceByIdResultat(resultat.getIdResultat());
					rbm = ResultatServiceImpl.getInstance().getRenduBioMolByIdResultat(resultat.getIdResultat());
					rf = ResultatServiceImpl.getInstance().getRenduFishByIdResultat(resultat.getIdResultat());
					if (tCommentaire == null || tCommentaire.isDisposed()) {
						createResultatContent();
					}
					remplirResultat(resultat);
					addDirtyListener();
				}
			}
		};
		this.isModifiable = modifiable;
		createContent();
	}

	private void addDirtyListener() {

		btnDossierUrgent.addSelectionListener(selectionListener);
		tUrgent.addModifyListener(modifyListener);
		comboTypeAnalyse.getCombo().addModifyListener(modifyListener);

		if (comboTechnicienne != null) {
			comboTechnicienne.getCombo().addModifyListener(modifyListener);
		}
		if (comboTechMiseEnCult != null) {
			comboTechMiseEnCult.getCombo().addModifyListener(modifyListener);
		}
		if (comboTechEtalement != null) {
			comboTechEtalement.getCombo().addModifyListener(modifyListener);
		}
		if (comboTechChoc != null) {
			comboTechChoc.getCombo().addModifyListener(modifyListener);
		}
		if (comboTechDenat != null) {
			comboTechDenat.getCombo().addModifyListener(modifyListener);
		}

		tUFExec.addModifyListener(modifyListener);

		if (dateTechnique != null) {
			dateTechnique.getControl().addModifyListener(modifyListener);
		}
		if (btnAjouterUnResultat != null) {
			btnAjouterUnResultat.removeSelectionListener(selectionListener);
		}
		if (dateRendu != null) {
			dateRendu.getControl().addModifyListener(modifyListener);
			if (comboTypeRenduNb != null) {
				comboTypeRenduNb.getCombo().addModifyListener(modifyListener);
			}
			if (comboTypeRenduStr != null) {
				comboTypeRenduStr.getCombo().addModifyListener(modifyListener);
			}
			if (comboSignataire != null) {
				comboSignataire.getCombo().addModifyListener(modifyListener);
			}
			if (btnCheckMosaique != null) {
				btnCheckMosaique.addSelectionListener(selectionListener);
			}
			if (btnRadioNonRendu != null) {
				btnRadioNonRendu.addSelectionListener(selectionListener);
			}
			if (btnRadioNormal != null) {
				btnRadioNormal.addSelectionListener(selectionListener);
			}
			if (btnRadioAnomal != null) {
				btnRadioAnomal.addSelectionListener(selectionListener);
			}
			if (btnRadioEchec != null) {
				btnRadioEchec.addSelectionListener(selectionListener);
			}
			if (btnRadioAnnule != null) {
				btnRadioAnnule.addSelectionListener(selectionListener);
			}
			if (tCommentaire != null) {
				tCommentaire.addModifyListener(modifyListener);
			}
			if (tFormule != null) {
				tFormule.addModifyListener(modifyListener);
			}

			if (btnRadioEquilibre != null) {
				btnRadioEquilibre.addSelectionListener(selectionListener);
			}
			if (btnRadioDesequilibre != null) {
				btnRadioDesequilibre.addSelectionListener(selectionListener);
			}
			if (btnRadioHMere != null) {
				btnRadioHMere.addSelectionListener(selectionListener);
			}
			if (btnRadioHPere != null) {
				btnRadioHPere.addSelectionListener(selectionListener);
			}
			if (btnRadioNHMere != null) {
				btnRadioNHMere.addSelectionListener(selectionListener);
			}
			if (btnRadioNHPere != null) {
				btnRadioNHPere.addSelectionListener(selectionListener);
			}
			if (btnRadioDeNovo != null) {
				btnRadioH2.addSelectionListener(selectionListener);
			}
			if (btnRadioDeNovo != null) {
				btnRadioDeNovo.addSelectionListener(selectionListener);
			}
			if (btnRadioNonVerif != null) {
				btnRadioNonVerif.addSelectionListener(selectionListener);
			}
			for (int i = 0; i < 24; i++) {

				if (btnCheckChromosome[i] != null) {

					btnCheckChromosome[i].addSelectionListener(selectionListener);
				}
			}
		}

		if (dVerification != null) {
			dVerification.getControl().addModifyListener(modifyListener);
		}
		if (tANoter != null) {
			tANoter.addModifyListener(modifyListener);
		}
		if (tResolution != null) {
			tResolution.addModifyListener(modifyListener);
		}
		if (comboTypePlanExp != null) {
			comboTypePlanExp.getCombo().addModifyListener(modifyListener);
		}
		if (dRedaction != null) {
			dRedaction.getControl().addModifyListener(modifyListener);
		}
		if (btnRedige != null) {
			btnRedige.addSelectionListener(selectionListener);
		}
		if (btnVerifie != null) {
			btnVerifie.addSelectionListener(selectionListener);
		}
		if (btnSigne != null) {
			btnSigne.addSelectionListener(selectionListener);
		}
		if (comboVerificateur != null) {
			comboVerificateur.getCombo().addModifyListener(modifyListener);
		}
		for (Entry<Integer, FormattedText> dReaFish : dRealisationFish.entrySet()) {
			if (dReaFish != null && dReaFish.getValue() != null && !dReaFish.getValue().getControl().isDisposed()) {
				dReaFish.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> btConfFish : btConfirmeFish.entrySet()) {
			if (btConfFish != null && btConfFish.getValue() != null && !btConfFish.getValue().isDisposed()) {
				btConfFish.getValue().addSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, Combo> comboOriParentaleFish : comboOrigineParentaleFish.entrySet()) {
			if (comboOriParentaleFish != null && comboOriParentaleFish.getValue() != null && !comboOriParentaleFish.getValue().isDisposed()) {
				comboOriParentaleFish.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Combo> comboOriParentalebm : comboOrigineParentaleBM.entrySet()) {
			if (comboOriParentalebm != null && comboOriParentalebm.getValue() != null && !comboOriParentalebm.getValue().isDisposed()) {
				comboOriParentalebm.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> bAjSondeFish : bAjouterSondeFish.entrySet()) {
			if (bAjSondeFish != null && bAjSondeFish.getValue() != null && !bAjSondeFish.getValue().isDisposed()) {
				bAjSondeFish.getValue().addSelectionListener(selectionListener);
			}
		}
		for (Entry<String, Combo> comboAnoConfztb : comboAnoConfirmeeztb.entrySet()) {
			if (comboAnoConfztb != null && comboAnoConfztb.getValue() != null && !comboAnoConfztb.getValue().isDisposed()) {
				comboAnoConfztb.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> bAjZoneHorsBM : bAjouterZoneHorsBM.entrySet()) {
			if (bAjZoneHorsBM != null && bAjZoneHorsBM.getValue() != null && !bAjZoneHorsBM.getValue().isDisposed()) {
				bAjZoneHorsBM.getValue().addSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, Button> bAjZoneDansBM : bAjouterZoneDansBM.entrySet()) {
			if (bAjZoneDansBM != null && bAjZoneDansBM.getValue() != null && !bAjZoneDansBM.getValue().isDisposed()) {
				bAjZoneDansBM.getValue().addSelectionListener(selectionListener);
			}
		}
		for (Entry<String, Button> bAnoConfef : bAnoConfirmeeef.entrySet()) {
			if (bAnoConfef != null && bAnoConfef.getValue() != null && !bAnoConfef.getValue().isDisposed()) {
				bAnoConfef.getValue().addSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, FormattedText> dReabm : dRealisationBM.entrySet()) {
			if (dReabm != null && dReabm.getValue() != null && !dReabm.getValue().getControl().isDisposed()) {
				dReabm.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, FormattedText> tDebAVqPCR : tDebutAVqPCR.entrySet()) {
			if (tDebAVqPCR != null && tDebAVqPCR.getValue() != null && !tDebAVqPCR.getValue().getControl().isDisposed()) {
				tDebAVqPCR.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, FormattedText> tFinPCR : tFinAVqPCR.entrySet()) {
			if (tFinPCR != null && tFinPCR.getValue() != null && !tFinPCR.getValue().getControl().isDisposed()) {
				tFinPCR.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tDebztb : tDebutztb.entrySet()) {
			if (tDebztb != null && tDebztb.getValue() != null && !tDebztb.getValue().getControl().isDisposed()) {
				tDebztb.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tFztb : tFinztb.entrySet()) {
			if (tFztb != null && tFztb.getValue() != null && !tFztb.getValue().getControl().isDisposed()) {
				tFztb.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tTztb : tTailleztb.entrySet()) {
			if (tTztb != null && tTztb.getValue() != null && !tTztb.getValue().getControl().isDisposed()) {
				tTztb.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tNbSiSonde1ef : tNbSignauxSonde1ef.entrySet()) {
			if (tNbSiSonde1ef != null && tNbSiSonde1ef.getValue() != null && !tNbSiSonde1ef.getValue().getControl().isDisposed()) {
				tNbSiSonde1ef.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tNbSiSonde2ef : tNbSignauxSonde2ef.entrySet()) {
			if (tNbSiSonde2ef != null && tNbSiSonde2ef.getValue() != null && !tNbSiSonde2ef.getValue().getControl().isDisposed()) {
				tNbSiSonde2ef.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnbPhoto : tnbPhotoef.entrySet()) {
			if (tnbPhoto != null && tnbPhoto.getValue() != null && !tnbPhoto.getValue().getControl().isDisposed()) {
				tnbPhoto.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnNoyauxef : tnbNoyauxef.entrySet()) {
			if (tnNoyauxef != null && tnNoyauxef.getValue() != null && !tnNoyauxef.getValue().getControl().isDisposed()) {
				tnNoyauxef.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnbMitef : tnbMitoseef.entrySet()) {
			if (tnbMitef != null && tnbMitef.getValue() != null && !tnbMitef.getValue().getControl().isDisposed()) {
				tnbMitef.getValue().getControl().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Combo> btConfBM : comboConfirmeBM.entrySet()) {
			if (btConfBM != null && btConfBM.getValue() != null && !btConfBM.getValue().isDisposed()) {
				btConfBM.getValue().addModifyListener(modifyListener);
			}
		}

		for (Entry<Integer, Text> tTechBM : tTechniqueBM.entrySet()) {
			if (tTechBM != null && tTechBM.getValue() != null && !tTechBM.getValue().isDisposed()) {
				tTechBM.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Text> tGeneRqPCR : tGeneRefqPCR.entrySet()) {
			if (tGeneRqPCR != null && tGeneRqPCR.getValue() != null && !tGeneRqPCR.getValue().isDisposed()) {
				tGeneRqPCR.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Text> tGeneAVBM : tGeneAVerifBM.entrySet()) {
			if (tGeneAVBM != null && tGeneAVBM.getValue() != null && !tGeneAVBM.getValue().isDisposed()) {
				tGeneAVBM.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tNomPztb : tNomPosztb.entrySet()) {
			if (tNomPztb != null && tNomPztb.getValue() != null && !tNomPztb.getValue().isDisposed()) {
				tNomPztb.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tExPosztb : tExonPosztb.entrySet()) {
			if (tExPosztb != null && tExPosztb.getValue() != null && !tExPosztb.getValue().isDisposed()) {
				tExPosztb.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tS1ef : tSonde1ef.entrySet()) {
			if (tS1ef != null && tS1ef.getValue() != null && !tS1ef.getValue().isDisposed()) {
				tS1ef.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tlocSnde1ef : tlocSonde1ef.entrySet()) {
			if (tlocSnde1ef != null && tlocSnde1ef.getValue() != null && !tlocSnde1ef.getValue().isDisposed()) {
				tlocSnde1ef.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tSnde2ef : tSonde2ef.entrySet()) {
			if (tSnde2ef != null && tSnde2ef.getValue() != null && !tSnde2ef.getValue().isDisposed()) {
				tSnde2ef.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tlocSde2ef : tlocSonde2ef.entrySet()) {
			if (tlocSde2ef != null && tlocSde2ef.getValue() != null && !tlocSde2ef.getValue().isDisposed()) {
				tlocSde2ef.getValue().addModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tV2ef : tVersion2ef.entrySet()) {
			if (tV2ef != null && tV2ef.getValue() != null && !tV2ef.getValue().isDisposed()) {
				tV2ef.getValue().addModifyListener(modifyListener);
			}
		}

		// caryo
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
			if (tResolutionCaryo != null) {
				tResolutionCaryo.addModifyListener(modifyListener);
			}
			if (btnMarquage != null) {
				for (String mq : ApplicationContexte.marquageCaryo) {
					btnMarquage.get(mq).addSelectionListener(selectionListener);
				}

			}
			if (tMitosesClassees != null) {
				tMitosesClassees.getControl().addModifyListener(modifyListener);
			}
			if (tMitosesExaminees != null) {
				tMitosesExaminees.getControl().addModifyListener(modifyListener);
			}
			if (tColonies != null) {
				tColonies.getControl().addModifyListener(modifyListener);
			}
			if (tChambresCultures != null) {
				tChambresCultures.getControl().addModifyListener(modifyListener);
			}
			if (tNbApresCult != null) {
				tNbApresCult.getControl().addModifyListener(modifyListener);
			}
			if (tNbApresED != null) {
				tNbApresED.getControl().addModifyListener(modifyListener);
			}
			if (cIndexMito != null) {
				cIndexMito.addModifyListener(modifyListener);
			}
			if (clChr != null) {
				clChr.addModifyListener(modifyListener);
			}
			if (cCytoplasme != null) {
				cCytoplasme.addModifyListener(modifyListener);
			}
			if (cMitosesEclat != null) {
				cMitosesEclat.addModifyListener(modifyListener);
			}
			if (cBandeR != null) {
				cBandeR.addModifyListener(modifyListener);
			}
			if (cBandeG != null) {
				cBandeG.addModifyListener(modifyListener);
			}
			if (tResolutionCaryoTech != null) {
				tResolutionCaryoTech.addModifyListener(modifyListener);
			}
			if (tFormuleTech != null) {
				tFormuleTech.addModifyListener(modifyListener);
			}
			if (tRemarqueTech != null) {
				tRemarqueTech.addModifyListener(modifyListener);
			}

			if (tSondeFish != null) {
				tSondeFish.addModifyListener(modifyListener);
			}
			if (tMotifFish != null) {
				tMotifFish.addModifyListener(modifyListener);
			}
			if (tNbMitoseFish != null) {
				tNbMitoseFish.getControl().addModifyListener(modifyListener);
			}
			if (tNbNoyauxFish != null) {
				tNbNoyauxFish.getControl().addModifyListener(modifyListener);
			}
			if (btnPlusFish != null) {
				btnPlusFish.addSelectionListener(selectionListener);
			}
			if (comboTypeFish != null) {
				comboTypeFish.addModifyListener(modifyListener);
			}
		}

		// FISH
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5)) {
			if (tSondeFish != null) {
				tSondeFish.addModifyListener(modifyListener);
			}
			if (tMotifFish != null) {
				tMotifFish.addModifyListener(modifyListener);
			}
			if (tNbMitoseFish != null) {
				tNbMitoseFish.getControl().addModifyListener(modifyListener);
			}
			if (tNbNoyauxFish != null) {
				tNbNoyauxFish.getControl().addModifyListener(modifyListener);
			}
		}

		// Micorsat
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 6)) {
			if (tNbMqInfo != null) {
				tNbMqInfo.getControl().addModifyListener(modifyListener);
			}
			if (tNbMqNonInfo != null) {
				tNbMqNonInfo.getControl().addModifyListener(modifyListener);
			}
			if (tNbMqExclus != null) {
				tNbMqExclus.getControl().addModifyListener(modifyListener);
			}
			if (btnRadioSexeF != null) {
				btnRadioSexeF.addSelectionListener(selectionListener);
			}
			if (btnRadioSexeM != null) {
				btnRadioSexeM.addSelectionListener(selectionListener);
			}
			if (btnRadioSexeNA != null) {
				btnRadioSexeNA.addSelectionListener(selectionListener);
			}
			if (comboContamination != null) {
				comboContamination.addModifyListener(modifyListener);
			}
		}
	}

	public void createContent() {

		sc1 = new ScrolledComposite(analyseTabItem.getParent(), SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
		composite = new Composite(sc1, SWT.NONE);
		sc1.getVerticalBar().setIncrement(10);
		sc1.setAlwaysShowScrollBars(true);
		sc1.getHorizontalBar().setIncrement(10);
		sc1.setContent(composite);
		analyseTabItem.setControl(sc1);
		composite.setLayout(new GridLayout(1, false));

		grpAnalyse = new Group(composite, SWT.NONE);
		grpAnalyse.setText("Analyse");

		grpAnalyse.setLayout(new GridLayout(2, false));

		btnDossierUrgent = new Button(grpAnalyse, SWT.CHECK);
		btnDossierUrgent.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		btnDossierUrgent.setText("Dossier urgent ?");

		tUrgent = new Text(grpAnalyse, SWT.BORDER);
		GridData gd_tUrgent = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
		gd_tUrgent.widthHint = 200;
		gd_tUrgent.heightHint = 50;
		tUrgent.setLayoutData(gd_tUrgent);

		Label lblTypeDanalyse = new Label(grpAnalyse, SWT.NONE);
		lblTypeDanalyse.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
		lblTypeDanalyse.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblTypeDanalyse.setText("Type d'analyse* :");

		comboTypeAnalyse = new ComboViewer(grpAnalyse, SWT.DROP_DOWN | SWT.READ_ONLY);
		comboTypeAnalyse.setContentProvider(ArrayContentProvider.getInstance());
		comboTypeAnalyse.setLabelProvider(new TypeAnalyseLabelProvider());
		comboTypeAnalyse.addSelectionChangedListener(new ISelectionChangedListener() {

			public void selectionChanged(SelectionChangedEvent event) {
				if (analyse.getTypeAnalyse() != null) {
					ArrayList<Utilisateur> listTechniciennes = UtilisateurServiceImpl.getInstance().getTechnicienneByTypeAnalyse(analyse.getTypeAnalyse().getIdTypeAnalyse());
					if (comboTechnicienne != null) {
						comboTechnicienne.setInput(listTechniciennes);
					}
					if (comboTechMiseEnCult != null) {
						comboTechMiseEnCult.setInput(listTechniciennes);
					}
					if (comboTechChoc != null) {
						comboTechChoc.setInput(listTechniciennes);
					}
					if (comboTechEtalement != null) {
						comboTechEtalement.setInput(listTechniciennes);
					}
					if (comboTechDenat != null) {
						comboTechDenat.setInput(listTechniciennes);
					}

				}
			}
		});

		Composite c = new Composite(grpAnalyse, SWT.NONE);
		c.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
		c.setLayout(new GridLayout(4, false));

		Label lblNumeroUFExec = new Label(c, SWT.NONE);
		lblNumeroUFExec.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblNumeroUFExec.setText("UF executant* :");

		tUFExec = new Combo(c, SWT.SINGLE);
		GridData gridData_tUFExec = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
		gridData_tUFExec.widthHint = 50;
		tUFExec.setLayoutData(gridData_tUFExec);
		tUFExec.setItems(new String[] { "4076", "4274", "4273", "4252" });

		setModifiable(isModifiable);
		analyseTabItem.getParent().setSelection(analyseTabItem);
	}

	protected void createGroupeSonde(ExpFish newExpFish, int idVerifFish) {
		if (!expFishs.containsKey(idVerifFish + "-" + nbsonde.get(idVerifFish))) {
			expFishs.put(idVerifFish + "-" + nbsonde.get(idVerifFish), newExpFish);
		}

		Group groupe = groupeSondeFish.get(newExpFish.getVeriffish().getIdVerifFish());
		if (!tSonde1ef.containsKey(idVerifFish + "-" + nbsonde.get(idVerifFish))) {

			Group sondeVerte = new Group(groupe, SWT.None);
			sondeVerte.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
			sondeVerte.setLayout(new GridLayout(2, false));
			sondeVerte.setText("Sonde 1 (verte)");

			Label lSonde1 = new Label(sondeVerte, SWT.NONE);
			lSonde1.setText("Nom");
			tSonde1ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), new Text(sondeVerte, SWT.BORDER));
			GridData gridData_tSonde1ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tSonde1ef.widthHint = 100;
			tSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setLayoutData(gridData_tSonde1ef);

			Label llocSonde1 = new Label(sondeVerte, SWT.NONE);
			llocSonde1.setText("Localisation");
			tlocSonde1ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), new Text(sondeVerte, SWT.BORDER));
			GridData gridData_tlocSonde1ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tlocSonde1ef.widthHint = 100;
			tlocSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setLayoutData(gridData_tlocSonde1ef);

			new Label(sondeVerte, SWT.NONE);
			new Label(sondeVerte, SWT.NONE);

			Label lnbSignauxSonde1 = new Label(sondeVerte, SWT.NONE);
			lnbSignauxSonde1.setText("Nombre de signaux");
			FormattedText tNbSignauxSonde1eftmp = new FormattedText(sondeVerte, SWT.BORDER);
			tNbSignauxSonde1eftmp.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tNbSignauxSonde1ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), tNbSignauxSonde1eftmp);
			GridData gridData_tNbSignauxSonde1ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tNbSignauxSonde1ef.widthHint = 100;
			tNbSignauxSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).getControl().setLayoutData(gridData_tNbSignauxSonde1ef);

			Group sondeRouge = new Group(groupe, SWT.None);
			sondeRouge.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
			sondeRouge.setLayout(new GridLayout(2, false));
			sondeRouge.setText("Sonde 2 (rouge)");

			Label lSonde2 = new Label(sondeRouge, SWT.NONE);
			lSonde2.setText("Nom");
			tSonde2ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), new Text(sondeRouge, SWT.BORDER));
			GridData gridData_tSonde2ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tSonde2ef.widthHint = 100;
			tSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setLayoutData(gridData_tSonde2ef);

			Label llocSonde2 = new Label(sondeRouge, SWT.NONE);
			llocSonde2.setText("Localisation");
			tlocSonde2ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), new Text(sondeRouge, SWT.BORDER));
			GridData gridData_tlocSonde2ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tlocSonde2ef.widthHint = 100;
			tlocSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setLayoutData(gridData_tlocSonde2ef);

			Label llocVersion2 = new Label(sondeRouge, SWT.NONE);
			llocVersion2.setText("Version");
			tVersion2ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), new Text(sondeRouge, SWT.BORDER));
			GridData gridData_tVersion2ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tVersion2ef.widthHint = 100;
			tVersion2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setLayoutData(gridData_tVersion2ef);

			Label lnbSignauxSonde2 = new Label(sondeRouge, SWT.NONE);
			lnbSignauxSonde2.setText("Nombre de signaux");
			FormattedText tNbSignauxSonde2eftmp = new FormattedText(sondeRouge, SWT.BORDER);
			tNbSignauxSonde2eftmp.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tNbSignauxSonde2ef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), tNbSignauxSonde2eftmp);
			GridData gridData_tNbSignauxSonde2ef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tNbSignauxSonde2ef.widthHint = 50;
			tNbSignauxSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).getControl().setLayoutData(gridData_tNbSignauxSonde2ef);

			Label lnbPhoto = new Label(groupe, SWT.NONE);
			lnbPhoto.setText("Nombre de photos");
			FormattedText tnbPhotoeftmp = new FormattedText(groupe, SWT.BORDER);
			tnbPhotoeftmp.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tnbPhotoef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), tnbPhotoeftmp);
			GridData gridData_tnbPhotoef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tnbPhotoef.widthHint = 100;
			tnbPhotoef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).getControl().setLayoutData(gridData_tnbPhotoef);

			Label lnbNoyaux = new Label(groupe, SWT.NONE);
			lnbNoyaux.setText("Nombre de noyaux comptés");
			FormattedText tnbNoyauxeftmp = new FormattedText(groupe, SWT.BORDER);
			tnbNoyauxeftmp.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tnbNoyauxef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), tnbNoyauxeftmp);
			GridData gridData_tnbNoyauxef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tnbNoyauxef.widthHint = 100;
			tnbNoyauxef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).getControl().setLayoutData(gridData_tnbNoyauxef);

			Label lnbMitose = new Label(groupe, SWT.NONE);
			lnbMitose.setText("Nombre de mitoses comptées");
			FormattedText tnbMitoseeftmp = new FormattedText(groupe, SWT.BORDER);
			tnbMitoseeftmp.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tnbMitoseef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), tnbMitoseeftmp);
			GridData gridData_tnbMitoseef = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tnbMitoseef.widthHint = 100;
			tnbMitoseef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).getControl().setLayoutData(gridData_tnbMitoseef);

			Button bAnoConfirmeeeftmp = new Button(groupe, SWT.CHECK);
			bAnoConfirmeeeftmp.setText("Anomalie confirmée");
			bAnoConfirmeeeftmp.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
			bAnoConfirmeeef.put(idVerifFish + "-" + nbsonde.get(idVerifFish), bAnoConfirmeeeftmp);

		}

		if (newExpFish.getSonde1() != null) {
			tSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setText(newExpFish.getSonde1());
		}
		if (newExpFish.getLocalisation1() != null) {
			tlocSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setText(newExpFish.getLocalisation1());
		}
		if (newExpFish.getNbSignaux1() != null) {
			tNbSignauxSonde1ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setValue(Long.parseLong(newExpFish.getNbSignaux1()));
		}
		if (newExpFish.getSonde2() != null) {
			tSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setText(newExpFish.getSonde2());
		}
		if (newExpFish.getLocalisation2() != null) {
			tlocSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setText(newExpFish.getLocalisation2());
		}
		if (newExpFish.getVersionSonde() != null) {
			tVersion2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setText(newExpFish.getVersionSonde());
		}
		if (newExpFish.getNbSignaux2() != null) {
			tNbSignauxSonde2ef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setValue(Long.parseLong(newExpFish.getNbSignaux2()));
		}
		if (newExpFish.getNbPhoto() != null) {
			tnbPhotoef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setValue(Long.parseLong(newExpFish.getNbPhoto()));
		}
		if (newExpFish.getNbNoyau() != null) {
			tnbNoyauxef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setValue(Long.parseLong(newExpFish.getNbNoyau()));
		}
		if (newExpFish.getNbMitose() != null) {
			tnbMitoseef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setValue(Long.parseLong(newExpFish.getNbMitose()));
		}
		bAnoConfirmeeef.get(idVerifFish + "-" + nbsonde.get(idVerifFish)).setSelection(newExpFish.getDetecte());
		groupe.pack();
		groupe.getParent().pack();
		setModifiable(isModifiable);
	}

	protected void createGroupeZoneBM(ZoneTesteeBiomol ztb, final int idVerifBM) {

		if (!ztbms.containsKey(idVerifBM + "-" + nbzone.get(idVerifBM))) {

			ztbms.put(idVerifBM + "-" + nbzone.get(idVerifBM), ztb);

		}
		Group g;
		if (ztb.isDanshors()) {
			g = groupePosqPCRDans.get(idVerifBM);
		} else {
			g = groupePosqPCRHors.get(idVerifBM);
		}
		if (!tNomPosztb.containsKey(idVerifBM + "-" + nbzone.get(idVerifBM))) {
			Label lNomPosBM = new Label(g, SWT.NONE);
			lNomPosBM.setText("Nom");
			tNomPosztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), new Text(g, SWT.BORDER));
			GridData gridData_tNomPosztb = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tNomPosztb.widthHint = 100;
			tNomPosztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setLayoutData(gridData_tNomPosztb);

			Label lExonPosBM = new Label(g, SWT.NONE);
			lExonPosBM.setText("Exon");
			tExonPosztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), new Text(g, SWT.BORDER));
			GridData gridData_tExonPosztb = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tExonPosztb.widthHint = 100;
			tExonPosztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setLayoutData(gridData_tExonPosztb);

			Label lDebut = new Label(g, SWT.NONE);
			lDebut.setText("début (chr" + ztb.getVerifBiomol().getAlteration().getChromosome() + ")");
			tDebutztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), new FormattedText(g, SWT.BORDER));
			GridData gridData_tDebutztb = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tDebutztb.widthHint = 100;
			tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
			tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getControl().setLayoutData(gridData_tDebutztb);

			Label lFin = new Label(g, SWT.NONE);
			lFin.setText("Fin (chr" + ztb.getVerifBiomol().getAlteration().getChromosome() + ")");
			tFinztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), new FormattedText(g, SWT.BORDER));
			GridData gridData_tFinztb = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tFinztb.widthHint = 100;
			tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getControl().setLayoutData(gridData_tFinztb);
			tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

			Label lTaille = new Label(g, SWT.NONE);
			lTaille.setText("Taille (pb)");
			tTailleztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), new FormattedText(g, SWT.BORDER));
			tTailleztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.US));
			GridData gridData_tTailleztb = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tTailleztb.widthHint = 100;
			tTailleztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getControl().setLayoutData(gridData_tTailleztb);

			tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getControl().addFocusListener(new FocusListener() {
				@Override
				public void focusGained(FocusEvent e) {
					// TODO Auto-generated method stub

				}

				@Override
				public void focusLost(FocusEvent e) {
					if (tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue() != null && tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue() != null) {
						tTailleztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setValue((Long) (tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue()) - (Long) (tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue()) + 1);
					}
				}
			});
			tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getControl().addFocusListener(new FocusListener() {

				@Override
				public void focusGained(FocusEvent e) {
					// TODO Auto-generated method stub

				}

				@Override
				public void focusLost(FocusEvent e) {
					if (tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue() != null && tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue() != null) {
						tTailleztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setValue((Long) (tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue()) - (Long) (tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).getValue()) + 1);
					}
				}
			});
			Combo c = new Combo(g, SWT.SINGLE | SWT.READ_ONLY);
			GridData gridData_tUFPrescr = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
			gridData_tUFPrescr.widthHint = 150;
			c.setLayoutData(gridData_tUFPrescr);
			c.setItems(detectes);
			comboAnoConfirmeeztb.put(idVerifBM + "-" + nbzone.get(idVerifBM), c);
			comboAnoConfirmeeztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
			comboAnoConfirmeeztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setText(detectes[ztb.getDetecte()]);

		}

		if (ztb.getLibelle() != null) {
			tNomPosztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setText(ztb.getLibelle());
		}
		if (ztb.getExon() != null) {
			tExonPosztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setText(ztb.getExon());
		}
		if (ztb.getDebut() != null) {
			tDebutztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setValue(ztb.getDebut());
		}
		if (ztb.getFin() != null) {
			tFinztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setValue(ztb.getFin());
		}
		if (ztb.getFin() != null && ztb.getDebut() != null) {
			tTailleztb.get(idVerifBM + "-" + nbzone.get(idVerifBM)).setValue(ztb.getFin() - ztb.getDebut());
		}
		setModifiable(isModifiable);
	}

	private void createResultatContent() {
		if (grpRsultatsss == null) {
			grpRsultatsss = new Group(grpRsultats, SWT.NONE);

			grpRsultatsss.setLayout(new GridLayout(2, false));
		}

		btnSigne = new Button(grpRsultatsss, SWT.CHECK);
		btnSigne.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
		btnSigne.setBounds(0, 0, 55, 15);
		btnSigne.setText("Résultat signé et rendu par");
		btnSigne.addSelectionListener(new SelectionListener() {

			@Override
			public void widgetDefaultSelected(SelectionEvent e) {
				// TODO Auto-generated method stub

			}

			@Override
			public void widgetSelected(SelectionEvent e) {
				if (btnSigne.getSelection() && dateRendu.getValue() == null) {
					dateRendu.setValue(new Date());
				}
			}
		});

		comboSignataire = new ComboViewer(grpRsultatsss, SWT.DROP_DOWN | SWT.READ_ONLY);
		comboSignataire.setContentProvider(ArrayContentProvider.getInstance());
		comboSignataire.setLabelProvider(new UtilisateurLabelProvider());
		if (analyse.getTypeAnalyse() != null) {
			ArrayList<Utilisateur> listSignataires = UtilisateurServiceImpl.getInstance().getBiologisteByTypeAnalyse(analyse.getTypeAnalyse().getIdTypeAnalyse());
			comboSignataire.setInput(listSignataires);
		}
		if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateRendu")) {
			Label lblDateDeRendu = new Label(grpRsultatsss, SWT.NONE);
			lblDateDeRendu.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblDateDeRendu.setBounds(0, 0, 55, 15);
			lblDateDeRendu.setText("Date de rendu :");

			dateRendu = new FormattedText(grpRsultatsss, SWT.BORDER);
			GridData gd_dateRendu = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
			gd_dateRendu.widthHint = 75;
			dateRendu.getControl().setLayoutData(gd_dateRendu);
			dateRendu.setFormatter(new DateFormatter("dd/MM/yyyy"));
		}

		if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTypeRendu")) {
			Label lblRsultat = new Label(grpRsultatsss, SWT.NONE);
			lblRsultat.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblRsultat.setBounds(0, 0, 55, 15);
			lblRsultat.setText("R\u00E9sultat :");

			btnRadioNonRendu = new Button(grpRsultatsss, SWT.RADIO);
			btnRadioNonRendu.setText("Non rendu");
			btnRadioNonRendu.setSelection(true);
			new Label(grpRsultats, SWT.NONE);

			btnRadioEchec = new Button(grpRsultatsss, SWT.RADIO);
			btnRadioEchec.setText("Echec");
			new Label(grpRsultats, SWT.NONE);

			btnRadioAnnule = new Button(grpRsultatsss, SWT.RADIO);
			btnRadioAnnule.setText("Annulé");
			new Label(grpRsultats, SWT.NONE);

			btnRadioNormal = new Button(grpRsultatsss, SWT.RADIO);
			btnRadioNormal.setText("Normal");
			new Label(grpRsultats, SWT.NONE);

			btnRadioAnomal = new Button(grpRsultatsss, SWT.RADIO);
			btnRadioAnomal.setText("Anormal");
			btnRadioAnomal.addSelectionListener(selectionbtAnoListener);

			compositeAnormal = new Composite(grpRsultatsss, SWT.NONE);
			compositeAnormal.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 2, 1));
			compositeAnormal.setLayout(new GridLayout(2, false));

		}

		// puce
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 3 && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce")) {
			Label lblResolution = new Label(grpRsultatsss, SWT.NONE);
			lblResolution.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblResolution.setBounds(0, 0, 55, 15);
			lblResolution.setText("Résolution : ");

			tResolution = new Text(grpRsultatsss, SWT.BORDER);
			GridData gridData_tResolution = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
			gridData_tResolution.widthHint = 75;
			tResolution.setLayoutData(gridData_tResolution);

			Label lblTypeDanalyse = new Label(grpRsultatsss, SWT.NONE);
			lblTypeDanalyse.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblTypeDanalyse.setText("Plan expérimental :");

			comboTypePlanExp = new ComboViewer(grpRsultatsss, SWT.DROP_DOWN | SWT.READ_ONLY);
			comboTypePlanExp.setContentProvider(ArrayContentProvider.getInstance());
			comboTypePlanExp.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
			comboTypePlanExp.setLabelProvider(new TypePlanExpLabelProvider());

		}
		// FISH
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 2 && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish")) {
			grpVerifFish = new Group(grpRsultatsss, SWT.NONE);
			GridData gd_grpVerifFish = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
			// gd_grpChromosomesAtteints.widthHint = 687;
			grpVerifFish.setLayoutData(gd_grpVerifFish);
			grpVerifFish.setText("CNV à vérifier par FISH");
			grpVerifFish.setLayout(new GridLayout(1, false));
		}
		// qPCR
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 4) {
			grpVerifqPCR = new Group(grpRsultatsss, SWT.NONE);
			GridData gd_grpVerifqPCR = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
			// gd_grpChromosomesAtteints.widthHint = 687;
			grpVerifqPCR.setLayoutData(gd_grpVerifqPCR);
			grpVerifqPCR.setText("CNV à vérifier par qPCR");
			grpVerifqPCR.setLayout(new GridLayout(1, false));

			Group grpAideSaisie = new Group(grpRsultatsss, SWT.NONE);
			grpAideSaisie.setText("Aide à la saisie");
			grpAideSaisie.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
			grpAideSaisie.setLayout(new GridLayout(1, true));
			btnCoherance = new Button(grpAideSaisie, SWT.CHECK);
			btnCoherance.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
			btnCoherance.setText("Cocher si le résultat de PCR quantitative est en cohérence avec le résultat de la puce");

			Group gparent = new Group(grpAideSaisie, SWT.NONE);
			gparent.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
			gparent.setLayout(new GridLayout(1, true));
			btnParentOnt = new Button(gparent, SWT.RADIO);
			btnParentOnt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
			btnParentOnt.setText("Le(s) parent(s) présente(nt) la/les anomalie(s)");

			btnParentOntPas = new Button(gparent, SWT.RADIO);
			btnParentOntPas.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
			btnParentOntPas.setText("Le(s) parent(s) ne présente(nt) pas la/les anomalie(s)");

			btnRechercheRemanChezParent = new Button(gparent, SWT.RADIO);
			btnRechercheRemanChezParent.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
			btnRechercheRemanChezParent.setText("Les parents n'ont pas été testés (ajouter le texte pour recherche du remaniement chez les parents)");

		}

		// caryo et FISH non puce
		if (analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 8)) {
			btnGenererFormule = new Button(grpRsultatsss, SWT.NONE);
			btnGenererFormule.setText("Générer la formule chromosomique et/ou la conclusion");
			btnGenererFormule.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
			btnGenererFormule.addSelectionListener(new SelectionListener() {

				public void widgetDefaultSelected(SelectionEvent e) {
					// TODO Auto-generated method stub

				}

				public void widgetSelected(SelectionEvent e) {
					if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirmation", "Etes-vous certain de vouloir générer la formule? En cliquant sur oui, le choix du type de résultat, la formule et le commentaire seront écrasés.")) {
						Prelevement prelevement = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
						if (btnRadioEchec.getSelection() && (prelevement.getNumeroPrelevement().contains("LA") || prelevement.getNumeroPrelevement().contains("VC"))) {
							tFormule.setText("Echec de culture cellulaire.\r\nAucune métaphase analysable.");
							tCommentaire.setText("En l'absence de prolifération cellulaire, il est impossible d'établir le caryotype.");
						}
						if (btnRadioEchec.getSelection() && prelevement.getNumeroPrelevement().contains("F")) {
							tFormule.setText("");
							tCommentaire.setText("Absence de pousse cellulaire sur l'ensemble des boites ensemencées.");
						}
						if (btnRadioEchec.getSelection() && prelevement.getNumeroPrelevement().contains("S")) {
							tFormule.setText("-");
							tCommentaire.setText("Obtention d'un nombre de mitoses et d'une résolution du banding insuffisant pour la réalisation du caryotype.\r\nL'analyse devra être réalisée sur un autre prélèvement sanguin.");
						}
						Personne personne = PersonneServiceImpl.getInstance().getPersonneById(prelevement.getPersonne().getIdPersonne());
						String sexe = "NA";
						if (prelevement.getSecteur().getIdSecteur() == 2 || prelevement.getSecteur().getIdSecteur() == 4) {
							sexe = personne.getSexe();
						} else if (prelevement.getSecteur().getIdSecteur() == 1) {
							Champ champSexe = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tSexeFoetus", "Prel-" + prelevement.getIdPrelevement());
							if (champSexe != null) {
								sexe = champSexe.getValeur();
							}
						}
						// caryotpye
						if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) {
							if (btnRadioNormal.getSelection()) {

								if (!btnPlusFish.getSelection()) {
									String cclCaryo = "\r\nIl n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n\nCe résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.";

									if (prelevement.getSecteur().getIdSecteur() == 1) {
										cclCaryo += " Par ailleurs, ce résultat ne garantit pas la naissance d'un enfant avec un phénotype normal.";
									}
									if (analyse.getTypeAnalyse().getLibelle().equals("caryotype en examen direct")) {
										cclCaryo = "\r\nAbsence d'anomalie du nombre ou de la structure chromosomique, pour la résolution de l'analyse, dans les cellules analysées.\r\nRésultat rendu avec les réserves habituelles pour l'étude du caryotype foetal à partir de l'examen direct de villosités choriales.\r\nLe caryotype sur culture est en cours.";
									}
									if (sexe.equals("M")) {
										tFormule.setText("46,XY");
										tCommentaire.setText("Formule à 46 chromosomes de sexe chromosomique masculin (XY)." + cclCaryo);
									} else if (sexe.equals("F")) {
										tFormule.setText("46,XX");
										tCommentaire.setText("Formule à 46 chromosomes de sexe chromosomique féminin (XX)." + cclCaryo);
									} else {
										tFormule.setText("46,XY ou 46,XX :" + "il manque le sexe dans l'onglet personne");
										tCommentaire.setText("Formule à 46 chromosomes de sexe chromosomique masculin (XY) ou féminin (XX) le sexe n'a pas été enregistré." + cclCaryo);
									}
								} else {
									String typeFish = comboTypeFish.getText();
									if (typeFish.equals(ApplicationContexte.typeFish[2])) {
										if (sexe.equals("F")) {
											tFormule.setText("46,XX.ish22q11.2(TUPLE1,TBX1)x2");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique féminin (XX).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ des sondes TUPLE 1 et TBX1 spécifiques de la région 22q11.2 met en évidence deux signaux fluorescents pour l'ensemble des métaphases analysées.\r\n"
													+ "En conclusion, absence de délétion 22q11.2 avec les sondes utilisées, dans les cellules analysées, dans les conditions de réalisation de l’analyse.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										}

										if (sexe.equals("M")) {
											tFormule.setText("46,XY.ish22q11.2(TUPLE1,TBX1)x2");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ des sondes TUPLE 1 et TBX1 spécifiques de la région 22q11.2 met en évidence deux signaux fluorescents pour l'ensemble des métaphases analysées.\r\n"
													+ "En conclusion, absence de délétion 22q11.2 avec les sondes utilisées, dans les cellules analysées, dans les conditions de réalisation de l’analyse.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										}
									}
									// FISH XY : DXZ1(Xq10)/DYZ3 (Yq10) Vysis
									if (typeFish.equals(ApplicationContexte.typeFish[3])) {
										if (sexe.equals("M")) {
											tFormule.setText("46,XY.ish Xq10(DXZ1x1),Yq10(DYZ3x1)");
											tCommentaire
													.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\nIl n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
															+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
															+ "L'hybridation in situ de sondes spécifiques des régions centromériques des chromosomes X et Y met en évidence un chromosome X et un chromosome Y pour la totalité des mitoses analysées avec les sondes utilisées dans les conditions de réalisation de l'examen.\r\n"
															+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
									// FISH dif sex : DXZ1(Xq10)/DYZ1 (Yq12)
									// Aquarius
									if (typeFish.equals(ApplicationContexte.typeFish[4])) {
										if (sexe.equals("M")) {
											tFormule.setText("46,XY.ish Xq10(DXZ1x1),Yq12(DYZ1x1)");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ met en évidence un chromosome X et un chromosome Y pour la totalité des mitoses analysées avec la sonde utilisée dans les conditions de réalisation de l'examen.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
									// FISH Prader Willi 15q11 : SNRPN/UBE3A
									// Aquarius
									if (typeFish.equals(ApplicationContexte.typeFish[5])) {
										if (sexe.equals("M")) {
											tFormule.setText("46,XY.ish15q11.2(SNRPN,UBE3A)x2");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ des sondes SNRPN et UBE3A spécifiques de la région 15q11.2 met en évidence deux signaux fluorescents pour l'ensemble des métaphases analysées.\r\n"
													+ "En conclusion, absence de délétion de la région 15q11.2 couverte par les sondes utilisées, dans les cellules analysées, dans les conditions de réalisation de l’analyse.\r\n"
													+ "L’hybridation in situ permet le diagnostic des Syndromes de Willi-Prader secondaires à une délétion de la région 15q11.2 mais ne permet pas le diagnostic de Syndrome de Willi-Prader secondaires à d’autres mécanismes moléculaires.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										}
										if (sexe.equals("F")) {
											tFormule.setText("46,XX.ish15q11.2(SNRPN,UBE3A)x2");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique féminin (XX).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ des sondes SNRPN et UBE3A spécifiques de la région 15q11.2 met en évidence deux signaux fluorescents pour l'ensemble des métaphases analysées.\r\n"
													+ "En conclusion, absence de délétion de la région 15q11.2 couverte par les sondes utilisées, dans les cellules analysées, dans les conditions de réalisation de l’analyse.\r\n"
													+ "L’hybridation in situ permet le diagnostic des Syndromes de Willi-Prader secondaires à une délétion de la région 15q11.2 mais ne permet pas le diagnostic de Syndrome de Willi-Prader secondaires à d’autres mécanismes moléculaires.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										}

									}
									// Retard statural fille : DXZ1(Xq10)
									// Métasystems
									if (typeFish.equals(ApplicationContexte.typeFish[6])) {
										if (sexe.equals("F")) {
											tFormule.setText("46,XX.ish Xq10(DXZ1x2)");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique féminin (XX).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ ne met pas en évidence d'anomalie de nombre des chromosomes X pour la totalité des mitoses analysées avec la sonde utilisée, dans les conditions de réalisation de l'examen.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
									// Retard statural garçon : DXZ1(Xq10)/DYZ3
									// (Yq10)
									// Aquarius
									if (typeFish.equals(ApplicationContexte.typeFish[7])) {
										if (sexe.equals("M")) {
											tFormule.setText("46,XY.ish Xq10(DXZ1x1),Yq10(DYZ3x1)");
											tCommentaire
													.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\n"
															+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
															+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
															+ "L'hybridation in situ de sondes spécifiques des régions centromériques des chromosomes X et Y met en évidence un chromosome X et un chromosome Y pour la totalité des mitoses analysées avec les sondes utilisées dans les conditions de réalisation de l'examen.\r\n"
															+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
									// Retard statural SHOX fille :
									// SHOX(Xp22)/DXZ1(Xq10)/DYZ1(Yq12) Aquarius
									if (typeFish.equals(ApplicationContexte.typeFish[8])) {
										if (sexe.equals("F")) {
											tFormule.setText("46,XX.ish Xp22.3(SHOXx2),Xq10(DXZ1x2)");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique féminin (XX).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ met en évidence deux chromosomes X et n'a pas décelé de réarrangement du gène SHOX pour la totalité des mitoses analysées avec la sonde utilisée dans les conditions de réalisation de l'examen.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
									// Retard statural SHOX garçon :
									// SHOX(Xp22/Yp11)/DXZ1(Xq10)/DYZ1(Yq12)
									// Aquarius
									if (typeFish.equals(ApplicationContexte.typeFish[9])) {
										if (sexe.equals("M")) {

											tFormule.setText("46,XY.ish Xp22.3(SHOXx1),Xq10(DXZ1x1),Yp11.32(SHOXx1),Yq12(DYZ1x1)");
											tCommentaire.setText("Formule à 46 chromosomes correspondant à un sexe chromosomique masculin (XY).\r\n"
													+ "Il n'a pas été décelé d'anomalie chromosomique dans les cellules étudiées avec les techniques de cytogénétique classique utilisées au laboratoire.\r\n"
													+ "Ce résultat permet d'éliminer les anomalies chromosomiques majeures, mais ne permet pas d'exclure les mosaïcismes et les remaniements chromosomiques subtils.\r\n\n"
													+ "L'hybridation in situ met en évidence un chromosome X et un chromosome Y et n'a pas décelé de réarrangement du gène SHOX pour la totalité des mitoses analysées avec la sonde utilisée dans les conditions de réalisation de l'examen.\r\n"
													+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
										} else {
											tFormule.setText("PROBLEME");
											tCommentaire.setText("Sexe incompatible avec cette analyse FISH");
										}
									}
								}
							}
							// T21, 18, 13
							if (btnRadioAnomal.getSelection() && comboTypeRenduNb.getCombo().getText().equals("trisomie libre d'un autosome")) {

								boolean tri = false;
								String chr = "";
								for (int j = 0; j < btnCheckChromosome.length; j++) {
									if (btnCheckChromosome[j].getText().equals("21") && btnCheckChromosome[j].getSelection()) {
										tri = true;
										chr = "21";
									}
									if (btnCheckChromosome[j].getText().equals("18") && btnCheckChromosome[j].getSelection()) {
										tri = true;
										chr = "18";
									}
									if (btnCheckChromosome[j].getText().equals("13") && btnCheckChromosome[j].getSelection()) {
										tri = true;
										chr = "13";
									}
								}
								if (tri && !btnCheckMosaique.getSelection()) {
									if (sexe.equals("M")) {
										tFormule.setText("47,XY,+" + chr);
										tCommentaire.setText("Caryotype correspondant à un sexe chromosomique masculin (XY).\r\nFormule à 47 chromosomes avec la présence d'un chromosome " + chr
												+ " surnuméraire sur la totalité des métaphases analysées.\r\nEn conclusion, ce résultat met en évidence une trisomie " + chr + " libre et apparemment homogène.\r\nUne consultation de génétique médicale est indiquée.\r\n");
									} else if (sexe.equals("F")) {
										tFormule.setText("47,XX,+" + chr);
										tCommentaire.setText("Caryotype correspondant à un sexe chromosomique chromosomique féminin (XX).\r\nFormule à 47 chromosomes avec la présence d'un chromosome " + chr
												+ " surnuméraire sur la totalité des métaphases analysées.\r\nEn conclusion, ce résultat met en évidence une trisomie " + chr + " libre et apparemment homogène.\r\nUne consultation de génétique médicale est indiquée.\r\n");
									} else {
										tFormule.setText("47,XY (ou XX) ,+" + chr + "il manque le sexe dans l'onglet personne");
										tCommentaire.setText("Caryotype correspondant à un sexe chromosomique chromosomique féminin (XX) ou masculin (XY).\r\nFormule à 47 chromosomes avec la présence d'un chromosome " + chr
												+ " surnuméraire sur la totalité des métaphases analysées.\r\nEn conclusion, ce résultat met en évidence une trisomie " + chr + " libre et apparemment homogène.\r\nUne consultation de génétique médicale est indiquée.\r\n");
									}
								}
							}
						}
						if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8) {
							String typeFish = comboTypeFish.getText();
							if (btnRadioAnomal.getSelection()) {
								// T21 : LSI 13/21 Aquarius
								if (typeFish.equals(ApplicationContexte.typeFish[1])) {
									tFormule.setText("nuc ish (D21S270,D21S341)x3");
									String typeCell = "";
									if (prelevement.getTypePrelevement().getLibelle().contains("ang")) {
										typeCell = "cellules sanguines non cultivées";
									}
									if (prelevement.getTypePrelevement().getLibelle().contains("Frottis jugal")) {
										typeCell = "cellules d'un frottis jugal";
									}
									if (prelevement.getTypePrelevement().getLibelle().contains("Frottis sanguin")) {
										typeCell = "cellules d'un frottis sanguin";
									}
									tCommentaire.setText("L'hybridation in situ de la sonde LSI 21 spécifique de la région 21q22.13 sur " + typeCell + " met en évidence 3 signaux fluorescents.\r\n\n"
											+ "Ce résultat est en faveur de la présence d'une trisomie 21 dans les noyaux analysés avec la sonde utilisée dans les conditions de réalisation de l'examen.\r\n" + "Le caryotype permettra de déterminer le mécanisme de survenue de la trisomie 21.\r\n\n"
											+ "Un conseil en génétique est indiqué.\r\n" + "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
								}
							}
							if (btnRadioNormal.getSelection()) {
								// A METTRE DE FISH SEULE
								// 22q11 : TUPLE1/TBX1
								if (typeFish.equals(ApplicationContexte.typeFish[2])) {
									tFormule.setText("nuc ish 22q11.2(TUPLE1,TBX1)x2 (SUPPRIMER NUC SI PAS SUR NOYAU)");
									tCommentaire.setText("L'hybridation in situ des sondes TUPLE 1 et TBX1 spécifiques de la région 22q11.2 met en évidence deux signaux fluorescents pour les régions couvertes par les sondes pour l'ensemble des métaphases (OU NOYAUX) analysées.\r\n\n"
											+ "En conclusion, absence de délétion 22q11.2 avec les sondes utilisées, dans les cellules analysées, dans les conditions de réalisation de l’analyse.\r\n\n"
											+ "Résultat rendu avec les réserves habituelles concernant les limites de résolution de la technique FISH.\r\n");
								}
							}

						}

					}
				}
			});

		}	// puce
		if (analyse.getTypeAnalyse() != null && ((analyse.getTypeAnalyse().getIdTypeAnalyse() == 3 && renduPuce != null) || (analyse.getTypeAnalyse().getIdTypeAnalyse() == 4 && rbm != null) || (analyse.getTypeAnalyse().getIdTypeAnalyse() == 2 && rf != null))
				&& DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce")) {
			btnGenererFormule = new Button(grpRsultatsss, SWT.NONE);
			btnGenererFormule.setText("Générer la formule chromosomique et/ou la conclusion");
			btnGenererFormule.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
			if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 3) {
				btnGenererFormule.setToolTipText("La formule reprendra les CNV à vérifier par FISH, par qPCR et ceux indiquée comme pathologiques et vous");
			}
			btnGenererFormule.addSelectionListener(new SelectionListener() {

				public void widgetDefaultSelected(SelectionEvent e) {
					// TODO Auto-generated method stub

				}

				public void widgetSelected(SelectionEvent e) {

					if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirmation", "Etes-vous certain de vouloir générer la formule? En cliquant sur oui, le choix du type de résultat, la formule et le commentaire seront écrasés.")) {
						String[] formuleccl = null;
						if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 3) {
							if (!btnRadioEchec.getSelection() && !btnRadioNonRendu.getSelection() && !btnRadioAnnule.getSelection()) {
								if (puce != null) {
									formuleccl = PuceServiceImpl.getInstance().genereFormuleConclusionPuce(puce);

								}
							} else {
								formuleccl = new String[2];
								if (btnRadioEchec.getSelection()) {
									String nomPrenom = PersonneServiceImpl.getInstance().getNomPrenomFromIdAnalyse(analyse.getIdAnalyse());
									formuleccl[0] = "Echec";
									formuleccl[1] = "Je vous informe que le laboratoire de Génétique Chromosomique ne peut pas rendre de résultat d'analyse chromosomique sur puce à ADN qui a été prescrite pour " + nomPrenom
											+ ".\r\n\nEn effet, la technique faite à partir de différents tissus a donné de mauvais contrôles qualité et un nombre important "
											+ "de CNV rendant l'analyse et l'interprétation difficile voire impossible. Une explication possible de cet échèc serait une mauvaise qualité de l'ADN.\r\n\n" + "Dans ce contexte, aucun résultat de puces à ADN ne vous sera rendu.\r\n";
								}
								if (btnRadioAnnule.getSelection()) {
									formuleccl[0] = "Annulé";
									formuleccl[1] = "La technique de puce a été annulée pour : " + "";
								}
								if (btnRadioNonRendu.getSelection()) {
									formuleccl[0] = "Non rendu";
									formuleccl[1] = "";
								}
								tANoter.setText("");
							}
						}
						// FISH puce
						if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 2) {
							formuleccl = new String[2];
							rf = ResultatServiceImpl.getInstance().getRenduFishByIdResultat(resultat.getIdResultat());
							// Prelevement prelevement =
							// PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
							// Personne personne =
							// PersonneServiceImpl.getInstance().getPersonneById(prelevement.getPersonne().getIdPersonne());
							Puce puce = PuceServiceImpl.getInstance().getPuceByid(rf.getPuce().getIdPuce());
							String concl = "";
							lvf = ResultatServiceImpl.getInstance().getVerifFishByRenduFish(rf.getIdRenduFish());
							for (final VerifFish vf : lvf) {

								List<Bande> bandes = ReferentielServiceImpl.getInstance().getBandesByCNV(vf.getAlteration());
								String bras = "";
								if (bandes.get(0).getLibelle().contains("p")) {
									bras = " du bras court des chromosomes " + vf.getAlteration().getChromosome();
								} else {
									bras = " du bras long des chromosomes " + vf.getAlteration().getChromosome();
								}
								String bande = "";
								if (bandes.size() > 1) {
									bande = vf.getAlteration().getChromosome() + bandes.get(0).getLibelle() + "-" + bandes.get(bandes.size() - 1).getLibelle();
								} else {
									bande = vf.getAlteration().getChromosome() + bandes.get(0).getLibelle();
								}
								int nbSonde = nbsonde.get(vf.getIdVerifFish());

								for (int id = 1; id <= nbSonde; id++) {

									concl += "L'hybridation in situ de la sonde non commerciale " + tSonde2ef.get(vf.getIdVerifFish() + "-" + id).getText() + " utilisée dans le cadre de la recherche, spécifique de la région " + bande + bras;
									int nbSignal = ((Number) tNbSignauxSonde2ef.get(vf.getIdVerifFish() + "-" + id).getValue()).intValue();
									if (nbSignal > 1) {
										concl += " montre " + nbSignal + " spots ";
									} else if (nbSignal == 0) {
										concl += " ne montre aucun signal ";
									} else if (nbSignal == 1) {
										concl += " montre un seul spot ";
									}
									concl += "sur l'ensemble des ";
									if (((Number) tnbMitoseef.get(vf.getIdVerifFish() + "-" + id).getValue()).intValue() > 0 && tnbNoyauxef.get(vf.getIdVerifFish() + "-" + id).getValue() == null) {
										concl += tnbMitoseef.get(vf.getIdVerifFish() + "-" + id).getValue() + " métaphases comptées.\r\n\n";
									} else if (((Number) tnbNoyauxef.get(vf.getIdVerifFish() + "-" + id).getValue()).intValue() > 0 && tnbMitoseef.get(vf.getIdVerifFish() + "-" + id).getValue() == null) {
										concl += tnbNoyauxef.get(vf.getIdVerifFish() + "-" + id).getValue() + " noyaux comptés.\r\n\n";
									} else if (((Number) tnbNoyauxef.get(vf.getIdVerifFish() + "-" + id).getValue()).intValue() > 0 && ((Number) tnbMitoseef.get(vf.getIdVerifFish() + "-" + id).getValue()).intValue() > 0) {
										concl += tnbMitoseef.get(vf.getIdVerifFish() + "-" + id).getValue() + " métaphases et " + tnbNoyauxef.get(vf.getIdVerifFish() + "-" + id).getValue() + " noyaux comptés.\r\n\n";
									}
								}
								String coherence = "";
								if (btConfirmeFish.get(vf.getIdVerifFish()).getSelection()) {
									concl += "Ces résultats sont en faveur d'";
									coherence = " sont en cohérence avec ceux observés par puce ";

								} else {
									concl += "Ces résultats ne sont pas en faveur d'";
									coherence = " ne sont pas en cohérence avec ceux observés par puce ";
								}
								if (vf.getAlteration().getNbCopie() >= 2) {
									concl += "une duplication ";
								} else {
									concl += "une délétion ";
								}
								concl += "dans la région " + bande;
								concl += " avec la sonde utilisée et";
								concl += coherence + puce.getTypePuce().getLibelle() + " " + puce.getTypePuce().getMarquePuce().getLibelle() + ".\r\n\n";
							}

							concl += "\r\nCes résultats sont rendus avec les réserves habituelles de la technique FISH et de son interprétation.";

							formuleccl[0] = tFormule.getText();
							formuleccl[1] = concl;

						}
						// qPCR puce
						if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 4) {
							formuleccl = new String[2];
							RenduBiomol rbm = ResultatServiceImpl.getInstance().getRenduBioMolByIdResultat(resultat.getIdResultat());
							Prelevement prelevement = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
							Personne personne = PersonneServiceImpl.getInstance().getPersonneById(prelevement.getPersonne().getIdPersonne());
							Puce puce = PuceServiceImpl.getInstance().getPuceByid(rbm.getPuce().getIdPuce());
							String concl = "";
							List<VerifBiomol> lvbm = ResultatServiceImpl.getInstance().getVerifBiomolByRenduBiomol(rbm.getIdRenduBioMol());
							for (final VerifBiomol vbm : lvbm) {
								if (comboConfirmeBM.get(vbm.getIdVerifBioMol()).getText().equals("Détectée")) {
									concl += "L'analyse par PCR quantitative a permis de confirmer la présence de ";
								} else if (comboConfirmeBM.get(vbm.getIdVerifBioMol()).getText().equals("Non détectée")) {
									concl += "L'analyse par PCR quantitative ne confirme pas la présence de ";
								} else {
									concl += "L'analyse par PCR quantitative est ininterprétable et ne permet pas ni de confirmer ni d'infirmer la présence de ";
								}
								if (vbm.getAlteration().getNbCopie() >= 2) {
									concl += "la duplication ";
								} else {
									concl += "la délétion ";
								}
								List<Bande> bandes = ReferentielServiceImpl.getInstance().getBandesByCNV(vbm.getAlteration());
								if (bandes.size() > 1) {
									concl += vbm.getAlteration().getChromosome() + bandes.get(0).getLibelle() + "-" + bandes.get(bandes.size() - 1).getLibelle();
								} else {
									concl += vbm.getAlteration().getChromosome() + bandes.get(0).getLibelle();
								}
								String genes = tGeneAVerifBM.get(vbm.getIdVerifBioMol()).getText();
								if (genes.split(" ").length > 2) {
									concl += " impliquant les gènes " + genes;
								} else {
									concl += " impliquant le gène " + genes;
								}
								long debut = 1000000000;
								long fin = 0;
								int nbZone = nbzone.get(vbm.getIdVerifBioMol());
								for (int id = 1; id <= nbZone; id++) {
									if (comboAnoConfirmeeztb.get(vbm.getIdVerifBioMol() + "-" + id).getText().equals("Détectée") && (long) tDebutztb.get(vbm.getIdVerifBioMol() + "-" + id).getValue() < debut) {
										debut = (long) tDebutztb.get(vbm.getIdVerifBioMol() + "-" + id).getValue();
									}
									if (comboAnoConfirmeeztb.get(vbm.getIdVerifBioMol() + "-" + id).getText().equals("Détectée") && (long) tFinztb.get(vbm.getIdVerifBioMol() + "-" + id).getValue() > fin) {
										fin = (long) tFinztb.get(vbm.getIdVerifBioMol() + "-" + id).getValue();
									}
								}

								concl += " (région Chr" + vbm.getAlteration().getChromosome() + ":" + debut + ".." + fin + "), ";

								if (prelevement.getSecteur().getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_PRENATAL)) {
									concl += "chez le foetus de Mme ";

								} else {
									if (personne.getSexe().equals("M")) {
										concl += "chez le patient ";
									} else {
										concl += "chez la patiente ";
									}

								}
								concl += personne.getNom() + " " + personne.getPrenom();

								if (btnCoherance.getSelection()) {
									concl += ". Par conséquent, ce résultat est en cohérence avec celui observé par puce ";

								} else {
									concl += " observée par puce ";
								}
								concl += puce.getTypePuce().getLibelle() + " " + puce.getTypePuce().getMarquePuce().getLibelle() + ".\r\n";

								if (btnParentOnt.getSelection()) {
									concl += "\r\n\nPar ailleurs, l'analyse de l'ADN des parents a permis de montrer que ce remaniement est hérité.\r\n";
								}
								if (btnParentOntPas.getSelection()) {
									concl += "\r\n\nPar ailleurs, l'analyse de l'ADN des parents a permis de montrer que ce remaniement est de novo.\r\n";
								}

								// var zones =
								// document.getElementById('idzoneTesteesDans_'+cnvs[index]).value;
								// var idZones = zones.split('|');
								// var fin = 0;
								// var debut = 10000000000;
								// for (var i = 0; i < idZones.length ;
								// i++){
								// newDebut =
								// document.getElementById('debut_'+cnvs[index]+'_'+idZones[i]+'_1').value;
								// newFin =
								// document.getElementById('fin_'+cnvs[index]+'_'+idZones[i]+'_1').value;
								// if (newFin > fin){
								// fin = newFin;}
								// if (newDebut < debut){
								// debut = newDebut;}
								// }
								// gene =
								// document.getElementById('geneInteret_'+cnvs[index]).value;
								// var posouvert = -1;
								// var u=0;
								// var genes = new Array();
								// for (var ind = 0; ind < gene.length ;
								// ind++){
								// if (gene.charAt(ind) == "[") {
								// posouvert = ind+1;
								// }
								// if (gene.charAt(ind) == "]" &&
								// posouvert>=0) {
								// genes[u]=gene.substring(posouvert, ind);
								// posouvert = -1;
								// u++;
								// }
								// }
								//
								//
								//
								//
								// if
								// (document.getElementById('detecte_'+cnvs[index]).checked){
								// cclPer[permis] = deldup+bande+region;
								// permis ++;
								// }else {
								// cclPasPer[pasPermis] =
								// deldup+bande+region;
								// pasPermis ++;
								// }
							}

							if (btnRechercheRemanChezParent.getSelection()) {
								String rem = "";
								if (lvbm.size() <= 1) {
									rem = "ce remaniement";
								} else {
									rem = "ces remaniements";
								}
								if (personne.getSexe().equals("M")) {
									concl += "\r\nIl est maintenant souhaitable de rechercher " + rem + " chez les parents du patient afin d'évaluer le caractère de novo ou transmis.\r\n";
								} else {
									concl += "\r\nIl est maintenant souhaitable de rechercher " + rem + " chez les parents de la patiente afin d'évaluer le caractère de novo ou transmis.\r\n";
								}
							}

							// if (document.getElementById('pere')){
							// var pere =
							// document.getElementById('pere').value;
							// }
							// if (document.getElementById('mere')){
							// var mere =
							// document.getElementById('mere').value;
							// }
							// if (document.getElementById('sexe').value ==
							// 'M'){
							// if (document.getElementById('pere') &&
							// document.getElementById('mere')){
							// typeParent = ' les parents du patient,
							// '+mere+' et '+pere ;
							// } else if (document.getElementById('pere')){
							// typeParent = ' le père du patient, '+ pere;
							// } else if (document.getElementById('mere')){
							// typeParent = ' la mère du patient, '+ mere;
							// }
							// } else {
							// if (document.getElementById('pere') &&
							// document.getElementById('mere')){
							// typeParent = ' les parents de la patiente,
							// '+mere+' et '+pere ;
							// } else if (document.getElementById('pere')){
							// typeParent = ' le père de la patiente, '+
							// pere;
							// } else if (document.getElementById('mere')){
							// typeParent = ' la mère de la patiente, '+
							// mere;
							// }
							// }

							if (tFormule != null) {
								formuleccl[0] = tFormule.getText();
							}

							formuleccl[1] = concl;
						}
						if (tFormule != null && tFormule.isVisible()) {
							tFormule.setText(formuleccl[0]);
						}
						tCommentaire.setText(formuleccl[1]);
						if ((formuleccl[0] != null && (formuleccl[0].equals("arr(1-22,X)x2") || formuleccl[0].equals("arr(1-22)x2,(XY)x1"))) && btnRadioNonRendu != null && btnRadioNonRendu.getSelection()) {
							btnRadioNonRendu.setSelection(false);
							btnRadioEchec.setSelection(false);
							btnRadioAnnule.setSelection(false);
							btnRadioNormal.setSelection(true);
							btnRadioAnomal.setSelection(false);
							if (btnRadioEquilibre != null && !btnRadioEquilibre.isDisposed()) {
								btnRadioEquilibre.setSelection(false);
							}
							if (btnRadioDesequilibre != null && !btnRadioDesequilibre.isDisposed()) {
								btnRadioDesequilibre.setSelection(false);
							}
						}
						if (formuleccl[0] != null && !formuleccl[0].equals("arr(1-22,X)x2") && !formuleccl[0].equals("arr(1-22)x2,(XY)x1") && btnRadioNonRendu != null && btnRadioNonRendu.getSelection()) {
							btnRadioNonRendu.setSelection(false);
							btnRadioEchec.setSelection(false);
							btnRadioAnnule.setSelection(false);
							btnRadioNormal.setSelection(false);
							btnRadioAnomal.setSelection(true);
							btnRadioDesequilibre.setSelection(true);
							if (btnRadioEquilibre != null && !btnRadioEquilibre.isDisposed()) {
								btnRadioEquilibre.setSelection(false);
							}
							if (btnRadioDesequilibre != null && !btnRadioDesequilibre.isDisposed()) {

								btnRadioDesequilibre.setSelection(false);
							}
						}
						if (formuleccl[1] != null) {
							String[] chrs = formuleccl[1].split(";");
							for (int i = 0; i < chrs.length - 1; i++) {
								String chr = chrs[i];
								for (int j = 0; j < btnCheckChromosome.length; j++) {
									if (btnCheckChromosome[j].getText().equals(chr)) {
										btnCheckChromosome[j].setSelection(true);
									}
								}
							}
						}

					}
				}
			});
		}

		// microsat
		if (analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 6)) {
			btnGenererFormule = new Button(grpRsultatsss, SWT.NONE);
			btnGenererFormule.setText("Générer la conclusion");
			btnGenererFormule.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
			btnGenererFormule.addSelectionListener(new SelectionListener() {

				public void widgetDefaultSelected(SelectionEvent e) {
					// TODO Auto-generated method stub

				}

				public void widgetSelected(SelectionEvent e) {
					if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirmation", "Etes-vous certain de vouloir générer la conclusion? En cliquant sur oui, le choix du type de résultat, le commentaire sera écrasé.")) {

						if (btnRadioEchec.getSelection()) {
							tCommentaire.setText("La téchnique de microsatellite n'a pas pu être réalisée.");
						}
						if (btnRadioNormal.getSelection()) {
							tCommentaire.setText("Abscence de contamination maternelle");
						}
						if (btnRadioAnomal.getSelection()) {
							tCommentaire.setText("Présence de contamination maternelle");
						}

					}
				}
			});
		}

		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() != 4 && analyse.getTypeAnalyse().getIdTypeAnalyse() != 6) {
			Label lblFormule = new Label(grpRsultatsss, SWT.NONE);
			lblFormule.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
			lblFormule.setText("Formule : ");

			tFormule = new Text(grpRsultatsss, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
			GridData gridData_tFormule = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
			gridData_tFormule.widthHint = 500;
			gridData_tFormule.heightHint = 100;
			tFormule.setLayoutData(gridData_tFormule);

		}
		if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tCommentaire")) {
			Label lblCommentaire = new Label(grpRsultatsss, SWT.NONE);
			lblCommentaire.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
			lblCommentaire.setText("Commentaire :");

			tCommentaire = new Text(grpRsultatsss, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
			GridData gridData_tCommentaire = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
			gridData_tCommentaire.widthHint = 500;
			gridData_tCommentaire.heightHint = 300;
			tCommentaire.setLayoutData(gridData_tCommentaire);
		}
		// puce
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 3 && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce")) {

			Label lblANoter = new Label(grpRsultatsss, SWT.NONE);
			lblANoter.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
			lblANoter.setText("A noter :");

			tANoter = new Text(grpRsultatsss, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
			GridData gridData_tANoter = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
			gridData_tANoter.widthHint = 500;
			gridData_tANoter.heightHint = 100;
			tANoter.setLayoutData(gridData_tANoter);

		}

		compositeAnormal.setVisible(false);
		((GridData) compositeAnormal.getLayoutData()).exclude = true;

		// FISH
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 2) {

		}

		if (analyse.getTypeAnalyse() != null && ((analyse.getTypeAnalyse().getIdTypeAnalyse() == 3 && renduPuce != null) || (analyse.getTypeAnalyse().getIdTypeAnalyse() == 4 && rbm != null) || (analyse.getTypeAnalyse().getIdTypeAnalyse() == 2 && rf != null))) {
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction")) {
				btnRedige = new Button(grpRsultatsss, SWT.CHECK);
				btnRedige.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
				btnRedige.setBounds(0, 0, 55, 15);
				btnRedige.setText("Résultat rédigé le");
				btnRedige.addSelectionListener(new SelectionListener() {

					@Override
					public void widgetDefaultSelected(SelectionEvent e) {
						// TODO Auto-generated method stub

					}

					@Override
					public void widgetSelected(SelectionEvent e) {
						if (btnRedige.getSelection()) {
							dRedaction.setValue(new Date());
						}
					}
				});

				dRedaction = new FormattedText(grpRsultatsss, SWT.BORDER);
				dRedaction.getControl().setEditable(false);
				GridData gd_dRedaction = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gd_dRedaction.widthHint = 75;
				dRedaction.getControl().setLayoutData(gd_dRedaction);
				dRedaction.setFormatter(new DateFormatter("dd/MM/yyyy"));
			}
		}
		// qPCR
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 4 && rbm != null && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dVerification")) {
			btnVerifie = new Button(grpRsultatsss, SWT.CHECK);
			btnVerifie.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			btnVerifie.setBounds(0, 0, 55, 15);
			btnVerifie.setText("Résultat vérifié");
			btnVerifie.addSelectionListener(new SelectionListener() {

				@Override
				public void widgetDefaultSelected(SelectionEvent e) {
					// TODO Auto-generated method stub

				}

				@Override
				public void widgetSelected(SelectionEvent e) {
					if (btnVerifie.getSelection()) {
						dVerification.setValue(new Date());
					}
				}
			});

			dVerification = new FormattedText(grpRsultatsss, SWT.BORDER);
			GridData gd_dVerification = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
			gd_dVerification.widthHint = 75;
			dVerification.getControl().setLayoutData(gd_dVerification);
			dVerification.setFormatter(new DateFormatter("dd/MM/yyyy"));

			Label lblverif = new Label(grpRsultatsss, SWT.NONE);
			lblverif.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblverif.setText("Par :");

			comboVerificateur = new ComboViewer(grpRsultatsss, SWT.DROP_DOWN | SWT.READ_ONLY);
			comboVerificateur.setContentProvider(ArrayContentProvider.getInstance());
			comboVerificateur.getControl().setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
			comboVerificateur.setLabelProvider(new UtilisateurLabelProvider());
			ArrayList<Utilisateur> listVerificateurs = UtilisateurServiceImpl.getInstance().getVerificateursqPCR();
			comboVerificateur.setInput(listVerificateurs);

		}
		new Label(grpRsultatsss, SWT.NONE);
		if (DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnGenererResultat") && analyse.getTypeAnalyse().getIdTypeAnalyse() != 6) {
			btnGenererResultat = new Button(grpRsultatsss, SWT.BORDER);
			btnGenererResultat.setText("Générer le document du résultat");
			btnGenererResultat.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if (((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).isDirty()) {
						MessageDialog.openInformation(Display.getCurrent().getActiveShell(), "Attention", "Avant de générer le document vous devez enregistrer le dossier.");
					} else {
						Analyse ana = AnalyseServiceImpl.getInstance().getAnalyseByIdAnalyse(resultat.getAnalyse().getIdAnalyse());

						if (ana != null && ana.getDateTechnique() == null) {
							MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champ manquant", "La date de la technique doit être enregistrée avant de générer le document.");

						} else {
							Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(ana.getPrelevement().getIdPrelevement());
							if (prel.getIndication() == null || prel.getIndication().getLibelle().equals("non renseigné")) {
								MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champ manquant",
										"Il est impossible d'enregistrer un résultat sans avoir une indication selectionnée pour le prélèvement.\r\nSi vous ne la connaissez pas, demandez au biologiste qui signera le résultat de vous l'indiquer.");
							} else {
								String nomFichier = null;
								// String[] tfichier = null;
								String[] fichiersPossibles = new String[4];
								String repResultat = "";
								if (Character.isDigit(prel.getNumeroPrelevement().charAt(1))) {
									repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prel.getNumeroPrelevement().substring(1, 3) + "\\" + prel.getNumeroPrelevement().substring(0, 1) + "\\";
								} else {
									if (Character.isDigit(prel.getNumeroPrelevement().charAt(2))) {
										repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prel.getNumeroPrelevement().substring(2, 4) + "\\" + prel.getNumeroPrelevement().substring(0, 2) + "\\";
									}
								}
								if (ana.getTypeAnalyse().getLibelle().equals("caryotype") || ana.getTypeAnalyse().getLibelle().equals("caryotype en examen direct")) {
									ResultatCaryo resutlatDoc = new ResultatCaryo();
									nomFichier = resutlatDoc.createDocument(resultat);

									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_caryo" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}

								} else if (ana.getTypeAnalyse().getLibelle().equals("puce") && !resultat.getResultat().equals("Echec")) {
									ResultatPuce resutlatDoc = new ResultatPuce();
									nomFichier = resutlatDoc.createDocument(resultat, puce);
									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_puce" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}

									// tfichier =
									// nomFichier.split("_puce"+analyse.getIdAnalyse()+"_"
									// );
								} else if (ana.getTypeAnalyse().getLibelle().equals("puce") && resultat.getResultat().equals("Echec")) {
									ResultatEchecPuce resutlatDoc = new ResultatEchecPuce();
									nomFichier = resutlatDoc.createDocument(resultat, puce);
									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_puce" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}

									// tfichier =
									// nomFichier.split("_puce"+analyse.getIdAnalyse()+"_"
									// );
								} else if (ana.getTypeAnalyse().getLibelle().contains("FISH v")) {
									ResultatFISH resutlatDoc = new ResultatFISH();
									nomFichier = resutlatDoc.createDocument(resultat);
									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_fish" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}

									// tfichier =
									// nomFichier.split("_fish"+analyse.getIdAnalyse()+"_"
									// );
								} else if (ana.getTypeAnalyse().getLibelle().contains("qPCR")) {
									ResultatBiomol resutlatDoc = new ResultatBiomol();
									nomFichier = resutlatDoc.createDocument(resultat);
									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_biomol" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}
								} else if (ana.getTypeAnalyse().getLibelle().contains("FISH (non")) {
									ResultatFISHNonPuce resutlatDoc = new ResultatFISHNonPuce();
									nomFichier = resutlatDoc.createDocument(resultat);
									String[] tabfichier = nomFichier.split("#");
									int i = 0;
									for (String tt : tabfichier) {
										String[] a = tt.split("_fish" + analyse.getIdAnalyse() + "_");
										Desktop desktop = Desktop.getDesktop();
										try {
											if (tt != null) {
												desktop.open(new File(repResultat + tt));
											}
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
										fichiersPossibles[i] = a[0];
										i++;
									}

									// tfichier =
									// nomFichier.split("_fish"+analyse.getIdAnalyse()+"_"
									// );
								}

								if (nomFichier != null) {

									File rep = new File(repResultat);
									File[] files = rep.listFiles();
									if (files != null) {
										for (int i = 0; i < files.length; i++) {
											for (int j = 0; j < fichiersPossibles.length; j++) {
												if (fichiersPossibles[j] != null && files[i].getName().contains(analyse.getIdAnalyse() + "_")) {
													if (files[i].isDirectory() != true && (files[i] != null && files[i].getName() != null && fichiersPossibles[j] != null && !fichiersPossibles[j].isEmpty() && files[i].getName().toLowerCase().contains(fichiersPossibles[j].toLowerCase()))) {
														if (!liens.contains(files[i].getName())) {
															liens.add(files[i].getName());
															String message = "<a href=\"" + files[i].getName() + "\">" + files[i].getName() + "</a>";
															final Link lblLienDoc = new Link(grpRsultatsss, SWT.NONE);
															lblLienDoc.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
															lblLienDoc.setText(message);
															lblLienDoc.setToolTipText(files[i].getPath());
															lblLienDoc.getParent().pack();
															lblLienDoc.addSelectionListener(new SelectionListener() {

																@Override
																public void widgetDefaultSelected(SelectionEvent e) {
																	// TODO
																	// Auto-generated
																	// method
																	// stub

																}

																@Override
																public void widgetSelected(SelectionEvent e) {
																	try {
																		File fichierResultat = new File(lblLienDoc.getToolTipText());
																		Desktop desktop = Desktop.getDesktop();
																		if (resultat.isSigne()) {
																			fichierResultat.setWritable(false);
																		}
																		desktop.open(fichierResultat);
																	} catch (IOException e1) {
																		// TODO
																		// Auto-generated
																		// catch
																		// block
																		e1.printStackTrace();
																	}
																}
															});
														}
													}
												}
											}
										}

										composite.pack();
										sc1.redraw();
									}
								}
							}
						}
					}
				}

			});

			// compte rendu puce
			if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getLibelle().equals("puce") && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnGenererResultat")) {
				btnGenererCompteRendu = new Button(grpRsultatsss, SWT.BORDER);
				btnGenererCompteRendu.setText("Générer le compte rendu puce");

				btnGenererCompteRendu.addSelectionListener(new SelectionAdapter() {
					public void widgetSelected(SelectionEvent e) {
						CompteRenduPuce compteRendu = new CompteRenduPuce();
						String nomFichier = compteRendu.createDocument(puce, resultat);
						Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
						String[] tfichier = nomFichier.split("_cr_");
						Desktop desktop = Desktop.getDesktop();
						try {
							if (nomFichier != null) {
								desktop.open(new File(nomFichier));
							}
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
						if (nomFichier != null) {
							String repResultat = "";
							if (Character.isDigit(prel.getNumeroPrelevement().charAt(1))) {
								repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prel.getNumeroPrelevement().substring(1, 3) + "\\" + prel.getNumeroPrelevement().substring(0, 1) + "\\";
							} else {
								if (Character.isDigit(prel.getNumeroPrelevement().charAt(2))) {
									repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prel.getNumeroPrelevement().substring(2, 4) + "\\" + prel.getNumeroPrelevement().substring(0, 2) + "\\";
								}
							}

							File rep = new File(repResultat);
							File[] files = rep.listFiles();
							if (files != null) {
								for (int i = 0; i < files.length; i++) {

									if (files[i].isDirectory() != true && (files[i].getName().toLowerCase().contains(tfichier[0].toLowerCase()))) {
										if (!liens.contains(files[i].getName())) {
											liens.add(files[i].getName());
											String message = "<a href=\"" + files[i].getName() + "\">" + files[i].getName() + "</a>";
											final Link lblLienDoc = new Link(grpRsultatsss, SWT.NONE);
											lblLienDoc.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
											lblLienDoc.setText(message);
											lblLienDoc.setToolTipText(files[i].getPath());
											lblLienDoc.getParent().pack();
											lblLienDoc.addSelectionListener(new SelectionListener() {

												@Override
												public void widgetDefaultSelected(SelectionEvent e) {
													// TODO
													// Auto-generated
													// method stub

												}

												@Override
												public void widgetSelected(SelectionEvent e) {
													try {
														File fichierResultat = new File(lblLienDoc.getToolTipText());
														Desktop desktop = Desktop.getDesktop();
														if (resultat.isSigne()) {
															fichierResultat.setWritable(false);
														}
														desktop.open(fichierResultat);
													} catch (IOException e1) {
														// TODO
														// Auto-generated
														// catch block
														e1.printStackTrace();
													}
												}
											});
										}
									}
								}
								grpRsultatsss.pack();
								composite.pack();
								analyseTabItem.getParent().pack();
							}
						}
					}
				});
			}

		}
		setModifiable(isModifiable);
	}

	private void createCompositeAnormal() {
		if (btnRadioEquilibre == null || btnRadioEquilibre.isDisposed()) {
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnCheckMosaique") && analyse.getTypeAnalyse().getIdTypeAnalyse() != 6 && analyse.getTypeAnalyse().getIdTypeAnalyse() != 4) {
				btnCheckMosaique = new Button(compositeAnormal, SWT.CHECK);
				btnCheckMosaique.setText("mosa\u00EFque (homogène si non coché)");
			}
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite") && analyse.getTypeAnalyse().getIdTypeAnalyse() != 6) {

				Group gpHerite = new Group(compositeAnormal, SWT.NONE);
				gpHerite.setText("Transmission");
				gpHerite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
				gpHerite.setLayout(new GridLayout(2, false));
				btnRadioHMere = new Button(gpHerite, SWT.RADIO);
				btnRadioHMere.setText("h\u00E9rit\u00E9 de la m\u00E8re");

				btnRadioNHMere = new Button(gpHerite, SWT.RADIO);
				btnRadioNHMere.setText("Mère non porteuse");

				btnRadioHPere = new Button(gpHerite, SWT.RADIO);
				btnRadioHPere.setText("h\u00E9rit\u00E9 du p\u00E8re");

				btnRadioNHPere = new Button(gpHerite, SWT.RADIO);
				btnRadioNHPere.setText("Père non porteur");

				btnRadioH2 = new Button(gpHerite, SWT.RADIO);
				btnRadioH2.setText("h\u00E9rit\u00E9 mais origine non d\u00E9termin\u00E9e");

				btnRadioDeNovo = new Button(gpHerite, SWT.RADIO);
				btnRadioDeNovo.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.ITALIC));
				btnRadioDeNovo.setText("de novo");

				btnRadioNonVerif = new Button(gpHerite, SWT.RADIO);
				btnRadioNonVerif.setText("non v\u00E9rifi\u00E9");
				btnRadioNonVerif.setSelection(true);

				new Label(gpHerite, SWT.NONE);
			}
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnCheckChromosomes") && analyse.getTypeAnalyse().getIdTypeAnalyse() != 6) {

				Group grpChromosomesAtteints = new Group(compositeAnormal, SWT.NONE);
				GridData gd_grpChromosomesAtteints = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
				// gd_grpChromosomesAtteints.widthHint = 687;
				grpChromosomesAtteints.setLayoutData(gd_grpChromosomesAtteints);
				grpChromosomesAtteints.setText("Chromosomes atteints");
				grpChromosomesAtteints.setLayout(new GridLayout(12, false));
				String[] chrs = ApplicationContexte.chr;
				int i = 0;
				for (String chr : chrs) {
					btnCheckChromosome[i] = new Button(grpChromosomesAtteints, SWT.CHECK);
					btnCheckChromosome[i].setText(chr);
					i++;
				}
			}
			if (analyse.getTypeAnalyse().getIdTypeAnalyse() != 6) {
				btnRadioEquilibre = new Button(compositeAnormal, SWT.RADIO);
				btnRadioEquilibre.setText("Equilibré");
				new Label(compositeAnormal, SWT.NONE);

				btnRadioDesequilibre = new Button(compositeAnormal, SWT.RADIO);
				btnRadioDesequilibre.setText("Déséquilibré");
				new Label(compositeAnormal, SWT.NONE);

				Label lblTypeNb = new Label(compositeAnormal, SWT.NONE);
				lblTypeNb.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
				lblTypeNb.setText("Anomalie de nombre :");

				comboTypeRenduNb = new ComboViewer(compositeAnormal, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTypeRenduNb.setContentProvider(ArrayContentProvider.getInstance());
				comboTypeRenduNb.setLabelProvider(new TypeRenduLabelProvider());
				ArrayList<TypeRendu> listTypeRenduNb = ReferentielServiceImpl.getInstance().getTypeRendu(1);
				listTypeRenduNb.add(0, new TypeRendu(""));
				comboTypeRenduNb.setInput(listTypeRenduNb);
				comboTypeRenduNb.getCombo().addSelectionListener(new SelectionListener() {

					public void widgetDefaultSelected(SelectionEvent e) {
						// TODO Auto-generated method stub

					}

					public void widgetSelected(SelectionEvent e) {
						// comboTypeRenduStr.setSelection(null);
					}
				});

				Label lblTypeStr = new Label(compositeAnormal, SWT.NONE);
				lblTypeStr.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
				lblTypeStr.setText("Anomalie de strucutre :");

				comboTypeRenduStr = new ComboViewer(compositeAnormal, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTypeRenduStr.setContentProvider(ArrayContentProvider.getInstance());
				comboTypeRenduStr.setLabelProvider(new TypeRenduLabelProvider());
				ArrayList<TypeRendu> listeTypeRenduStr = ReferentielServiceImpl.getInstance().getTypeRendu(2);
				listeTypeRenduStr.add(0, new TypeRendu(""));
				comboTypeRenduStr.setInput(listeTypeRenduStr);
				comboTypeRenduStr.getCombo().addSelectionListener(new SelectionListener() {

					public void widgetDefaultSelected(SelectionEvent e) {
						// TODO Auto-generated method stub

					}

					public void widgetSelected(SelectionEvent e) {
						// comboTypeRenduNb.setSelection(null);
					}
				});
			}
			new Label(compositeAnormal, SWT.NONE);

		}
		((GridData) compositeAnormal.getLayoutData()).exclude = !btnRadioAnomal.getSelection();
		compositeAnormal.setVisible(true);
		setModifiable(isModifiable);
	}

	public Analyse getAnalyse() {
		return analyse;
	}

	public TabItem getTabItem() {
		return analyseTabItem;
	}

	public boolean isModifiable() {
		return isModifiable;
	}

	public Analyse recupererObjet() {
		if (verifierChamp()) {
			analyse.setChamps(new ArrayList<Champ>());

			if (comboTechnicienne != null) {
				ISelection selectionTech = comboTechnicienne.getSelection();
				if (!selectionTech.isEmpty()) {
					IStructuredSelection structuredSelection = (IStructuredSelection) selectionTech;
					Utilisateur tech = (Utilisateur) structuredSelection.getFirstElement();
					if (tech.getIdUtilisateur() != null) {
						analyse.setTechnicienne(tech);
					} else {
						analyse.setTechnicienne(null);
					}
				}
			}
			ISelection selectionTypeAna = comboTypeAnalyse.getSelection();
			if (!selectionTypeAna.isEmpty()) {
				IStructuredSelection structuredSelection = (IStructuredSelection) selectionTypeAna;
				analyse.setTypeAnalyse((TypeAnalyse) structuredSelection.getFirstElement());
			}
			analyse.setUrgent(btnDossierUrgent.getSelection());
			analyse.setRaisonUrgent(tUrgent.getText().trim());
			if (dateTechnique != null) {
				analyse.setDateTechnique((Date) dateTechnique.getValue());
			}

			if (!tUFExec.getText().isEmpty()) {
				analyse.setUfExec(Integer.parseInt(tUFExec.getText()));
			}

			if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) {
				// caryo
				if (tResolutionCaryo != null && tResolutionCaryo.getText() != null && !tResolutionCaryo.getText().isEmpty()) {
					analyse.addChamp(new Champ(tResolutionCaryo.getText(), "tResolutionCaryo", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tMitosesClassees != null && tMitosesClassees.getValue() != null) {
					analyse.addChamp(new Champ(tMitosesClassees.getValue().toString(), "tMitosesClassees", "Ana-" + analyse.getIdAnalyse()));
				}

				if (tMitosesExaminees != null && tMitosesExaminees.getValue() != null) {
					analyse.addChamp(new Champ(tMitosesExaminees.getValue().toString(), "tMitosesExaminees", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tColonies != null && tColonies.getValue() != null) {
					analyse.addChamp(new Champ(tColonies.getValue().toString(), "tColonies", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tChambresCultures != null && tChambresCultures.getValue() != null) {
					analyse.addChamp(new Champ(tChambresCultures.getValue().toString(), "tChambresCultures", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tNbApresED != null && tNbApresED.getValue() != null) {
					analyse.addChamp(new Champ(tNbApresED.getValue().toString(), "tNbApresED", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tNbApresCult != null && tNbApresCult.getValue() != null) {
					analyse.addChamp(new Champ(tNbApresCult.getValue().toString(), "tNbApresCult", "Ana-" + analyse.getIdAnalyse()));
				}
				if (cIndexMito != null && cIndexMito.getText() != null) {
					analyse.addChamp(new Champ(cIndexMito.getText(), "cIndexMito", "Ana-" + analyse.getIdAnalyse()));
				}
				if (clChr != null && clChr.getText() != null) {
					analyse.addChamp(new Champ(clChr.getText(), "clChr", "Ana-" + analyse.getIdAnalyse()));
				}
				if (cCytoplasme != null && cCytoplasme.getText() != null) {
					analyse.addChamp(new Champ(cCytoplasme.getText(), "cCytoplasme", "Ana-" + analyse.getIdAnalyse()));
				}
				if (cMitosesEclat != null && cMitosesEclat.getText() != null) {
					analyse.addChamp(new Champ(cMitosesEclat.getText(), "cMitosesEclat", "Ana-" + analyse.getIdAnalyse()));
				}
				if (cBandeR != null && cBandeR.getText() != null) {
					analyse.addChamp(new Champ(cBandeR.getText(), "cBandeR", "Ana-" + analyse.getIdAnalyse()));
				}
				if (cBandeG != null && cBandeG.getText() != null) {
					analyse.addChamp(new Champ(cBandeG.getText(), "cBandeG", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tResolutionCaryoTech != null && tResolutionCaryoTech.getText() != null) {
					analyse.addChamp(new Champ(tResolutionCaryoTech.getText(), "tResolutionCaryoTech", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tFormuleTech != null && tFormuleTech.getText() != null) {
					analyse.addChamp(new Champ(tFormuleTech.getText(), "tFormuleTech", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tRemarqueTech != null && tRemarqueTech.getText() != null) {
					analyse.addChamp(new Champ(tRemarqueTech.getText(), "tRemarqueTech", "Ana-" + analyse.getIdAnalyse()));
				}
				String marquage = "";
				for (Entry<String, Button> entry : btnMarquage.entrySet()) {
					if (entry.getValue().getSelection()) {
						marquage += entry.getKey() + "|";
					}
				}
				if (btnPlusFish != null) {
					analyse.addChamp(new Champ("" + btnPlusFish.getSelection(), "btnPlusFish", "Ana-" + analyse.getIdAnalyse()));
					if (btnPlusFish.getSelection()) {
						// FISH
						if (tNbMitoseFish != null && tNbMitoseFish.getValue() != null) {
							analyse.addChamp(new Champ(tNbMitoseFish.getValue().toString(), "tNbMitoseFish", "Ana-" + analyse.getIdAnalyse()));
						}
						if (tNbNoyauxFish != null && tNbNoyauxFish.getValue() != null) {
							analyse.addChamp(new Champ(tNbNoyauxFish.getValue().toString(), "tNbNoyauxFish", "Ana-" + analyse.getIdAnalyse()));
						}
						if (tSondeFish != null && tSondeFish.getText() != null) {
							analyse.addChamp(new Champ(tSondeFish.getText().toString(), "tSondeFish", "Ana-" + analyse.getIdAnalyse()));
						}
						if (tMotifFish != null && tMotifFish.getText() != null) {
							analyse.addChamp(new Champ(tMotifFish.getText().toString(), "tMotifFish", "Ana-" + analyse.getIdAnalyse()));
						}
						if (comboTypeFish != null && comboTypeFish.getText() != null) {
							analyse.addChamp(new Champ(comboTypeFish.getText(), "comboTypeFish", "Ana-" + analyse.getIdAnalyse()));
						}
					}
				}

				if (!marquage.isEmpty()) {
					analyse.addChamp(new Champ(marquage.substring(0, marquage.length() - 1), "btnMarquage", "Ana-" + analyse.getIdAnalyse()));
				}

				if (comboTechChoc != null) {
					ISelection selectionTechC = comboTechChoc.getSelection();
					if (!selectionTechC.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTechC;
						Utilisateur techC = (Utilisateur) structuredSelection.getFirstElement();
						if (techC.getIdUtilisateur() != null) {
							analyse.addChamp(new Champ("" + techC.getIdUtilisateur(), "comboTechChoc", "Ana-" + analyse.getIdAnalyse()));
						}
					}
				}
				if (comboTechDenat != null) {
					ISelection selectionTechD = comboTechDenat.getSelection();
					if (!selectionTechD.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTechD;
						Utilisateur techD = (Utilisateur) structuredSelection.getFirstElement();
						if (techD.getIdUtilisateur() != null) {
							analyse.addChamp(new Champ("" + techD.getIdUtilisateur(), "comboTechDenat", "Ana-" + analyse.getIdAnalyse()));
						}
					}
				}
				if (comboTechEtalement != null) {
					ISelection selectionTechE = comboTechEtalement.getSelection();
					if (!selectionTechE.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTechE;
						Utilisateur techE = (Utilisateur) structuredSelection.getFirstElement();
						if (techE.getIdUtilisateur() != null) {
							analyse.addChamp(new Champ("" + techE.getIdUtilisateur(), "comboTechEtalement", "Ana-" + analyse.getIdAnalyse()));
						}
					}
				}

				if (comboTechMiseEnCult != null) {
					ISelection selectionTechM = comboTechMiseEnCult.getSelection();
					if (!selectionTechM.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTechM;
						Utilisateur techM = (Utilisateur) structuredSelection.getFirstElement();
						if (techM.getIdUtilisateur() != null) {
							analyse.addChamp(new Champ("" + techM.getIdUtilisateur(), "comboTechMiseEnCult", "Ana-" + analyse.getIdAnalyse()));
						}
					}
				}
			}

			if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 2) {
				// FISH
				if (tNbMitoseFish != null && tNbMitoseFish.getValue() != null) {
					analyse.addChamp(new Champ(tNbMitoseFish.getValue().toString(), "tNbMitoseFish", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tNbNoyauxFish != null && tNbNoyauxFish.getValue() != null) {
					analyse.addChamp(new Champ(tNbNoyauxFish.getValue().toString(), "tNbNoyauxFish", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tSondeFish != null && tSondeFish.getText() != null) {
					analyse.addChamp(new Champ(tSondeFish.getText().toString(), "tSondeFish", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tMotifFish != null && tMotifFish.getText() != null) {
					analyse.addChamp(new Champ(tMotifFish.getText().toString(), "tMotifFish", "Ana-" + analyse.getIdAnalyse()));
				}
				String marquage = "";
				for (Entry<String, Button> entry : btnMarquage.entrySet()) {
					if (entry.getValue().getSelection()) {
						marquage += entry.getKey() + "|";
					}
				}
				if (!marquage.isEmpty()) {
					analyse.addChamp(new Champ(marquage.substring(0, marquage.length() - 1), "btnMarquage", "Ana-" + analyse.getIdAnalyse()));
				}
				if (comboTypeFish != null && comboTypeFish.getText() != null) {
					analyse.addChamp(new Champ(comboTypeFish.getText(), "comboTypeFish", "Ana-" + analyse.getIdAnalyse()));
				}
			}
			if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 6) {
				// microsat
				if (tNbMqInfo != null && tNbMqInfo.getValue() != null) {
					analyse.addChamp(new Champ(tNbMqInfo.getValue().toString(), "tNbMqInfo", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tNbMqNonInfo != null && tNbMqNonInfo.getValue() != null) {
					analyse.addChamp(new Champ(tNbMqNonInfo.getValue().toString(), "tNbMqNonInfo", "Ana-" + analyse.getIdAnalyse()));
				}
				if (tNbMqExclus != null && tNbMqExclus.getValue() != null) {
					analyse.addChamp(new Champ(tNbMqExclus.getValue().toString(), "tNbMqExclus", "Ana-" + analyse.getIdAnalyse()));
				}
				String sexeFeotus = "NA";
				if (btnRadioSexeF != null) {

					if (btnRadioSexeF.getSelection()) {
						sexeFeotus = "F";
					}
					if (btnRadioSexeM.getSelection()) {
						sexeFeotus = "M";
					}
					if (btnRadioSexeNA.getSelection()) {
						sexeFeotus = "NA";
					}
				}
				Champ cSexe = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tSexeFoetus", "Prel-" + analyse.getPrelevement().getIdPrelevement());
				if (cSexe == null) {
					analyse.addChamp(new Champ("" + sexeFeotus, "tSexeFoetus", "Prel-" + analyse.getPrelevement().getIdPrelevement()));
				} else {
					if (!sexeFeotus.equals("NA")) {
						cSexe.setValeur(sexeFeotus);
						analyse.addChamp(cSexe);
					}

				}
				if (comboContamination != null && comboContamination.getText() != null) {
					analyse.addChamp(new Champ(comboContamination.getText(), "comboContamination", "Ana-" + analyse.getIdAnalyse()));
				}
			}
		} else {
			return null;
		}
		return analyse;
	}

	public Resultat recupererObjetResultat() {
		if (resultat != null) {
			Date dateRenduAvant = resultat.getDateRendu();
			Date dateRenduApres = (Date) dateRendu.getValue();
			if (verifierChampResultat()) {
				ISelection selectionBio = comboSignataire.getSelection();
				if (!selectionBio.isEmpty()) {
					IStructuredSelection structuredSelection = (IStructuredSelection) selectionBio;
					Utilisateur sign = (Utilisateur) structuredSelection.getFirstElement();
					if (sign.getIdUtilisateur() != null) {
						resultat.setSignataire(sign);
					} else {
						resultat.setSignataire(null);
					}

				}
				resultat.setDateRendu((Date) dateRendu.getValue());
				if (comboTypeRenduNb != null) {
					ISelection selectionTypeRenduNb = comboTypeRenduNb.getSelection();
					if (!selectionTypeRenduNb.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTypeRenduNb;
						resultat.setTypeRendu((TypeRendu) structuredSelection.getFirstElement());
					}
				}
				if (comboTypeRenduStr != null) {
					ISelection selectionTypeRenduStr = comboTypeRenduStr.getSelection();
					if (!selectionTypeRenduStr.isEmpty()) {
						IStructuredSelection structuredSelection = (IStructuredSelection) selectionTypeRenduStr;
						resultat.setTypeRendu((TypeRendu) structuredSelection.getFirstElement());
					}
				}
				if (btnRadioNonRendu.getSelection()) {
					resultat.setResultat("Non rendu");
				}
				if (btnRadioEchec.getSelection()) {
					resultat.setResultat("Echec");
				}
				if (btnRadioAnnule.getSelection()) {
					resultat.setResultat("Annulé");
				}
				if (btnRadioNormal.getSelection()) {
					resultat.setResultat("Normal");
				}
				if (btnRadioAnomal.getSelection()) {
					resultat.setResultat("Anormal");

					if (btnRadioEquilibre != null && btnRadioEquilibre.getSelection()) {
						resultat.setResultat("Anormal équilibré");
					}
					if (btnRadioDesequilibre != null && btnRadioDesequilibre.getSelection()) {
						resultat.setResultat("Anormal déséquilibré");
					}
					if (btnCheckMosaique != null && btnCheckMosaique.getSelection()) {
						resultat.setMozaique(true);
					} else {
						resultat.setMozaique(false);
					}
					if (btnRadioHMere != null && btnRadioHMere.getSelection()) {
						resultat.setHerite("Hérité de la mère");
					}
					if (btnRadioNHMere != null && btnRadioNHMere.getSelection()) {
						resultat.setHerite("Mère non porteuse");
					}
					if (btnRadioHPere != null && btnRadioHPere.getSelection()) {
						resultat.setHerite("Hérité du père");
					}
					if (btnRadioNHPere != null && btnRadioNHPere.getSelection()) {
						resultat.setHerite("Père non porteur");
					}
					if (btnRadioH2 != null && btnRadioH2.getSelection()) {
						resultat.setHerite("Hérité de l'un des 2");
					}
					if (btnRadioDeNovo != null && btnRadioDeNovo.getSelection()) {
						resultat.setHerite("De novo");
					}

					if (btnRadioNonVerif != null && btnRadioNonVerif.getSelection()) {
						resultat.setHerite("Non verifié");
					}
					String[] chrs = ApplicationContexte.chr;
					String chr = "";
					for (int i = 0; i < chrs.length; i++) {
						if (btnCheckChromosome[i] != null && btnCheckChromosome[i].getSelection()) {
							chr += chrs[i] + "|";
						}
					}
					if (!chr.isEmpty()) {
						resultat.setChromosomes(chr);
					}
				}
				if (tFormule != null) {
					resultat.setFormule(tFormule.getText().trim());
				}
				resultat.setSigne(btnSigne.getSelection());
				resultat.setCommentaire(tCommentaire.getText().trim());
				resultat.setRendre(dateRenduAvant == null && dateRenduApres != null);
			} else {
				return null;
			}
			return resultat;
		} else
			return null;
	}

	public Object[] recupererRenduBiomolZoneTestee() {
		List<ZoneTesteeBiomol> liteZone = new ArrayList<ZoneTesteeBiomol>();
		if (rbm != null) {
			if (verifierChampRenduBiomol()) {

				if (rbm.getBuild() == null) {
					rbm.setBuild("hg19");
				}

				rbm.setCoherencePuce(btnCoherance.getSelection());
				rbm.setDateRedaction((Date) dRedaction.getValue());
				rbm.setDateVerification((Date) dVerification.getValue());
				if (btnRedige != null && btnRedige.getSelection()) {
					rbm.setValide(1);
					if (btnVerifie.getSelection()) {
						rbm.setValide(2);
					}
					if (dateRendu.getValue() != null) {
						rbm.setValide(3);
						rbm.setDateSignature((Date) dateRendu.getValue());
					}
				} else {
					rbm.setValide(0);
				}

				ISelection selection = comboVerificateur.getSelection();
				if (!selection.isEmpty()) {
					IStructuredSelection structuredSelection = (IStructuredSelection) selection;
					rbm.setVerificateur((Utilisateur) structuredSelection.getFirstElement());
				}
				for (VerifBiomol vbm : lvbm) {
					vbm.setDateVerif((Date) dRealisationBM.get(vbm.getIdVerifBioMol()).getValue());
					int detec = -1;
					int i = 0;
					for (String det : detectes) {
						if (comboConfirmeBM.get(vbm.getIdVerifBioMol()).getText().equals(det)) {
							detec = i;
						}
						i++;
					}
					vbm.setDetecte(detec);

					vbm.setHerite(comboOrigineParentaleBM.get(vbm.getIdVerifBioMol()).getText());
					vbm.setDebut((Long) tDebutAVqPCR.get(vbm.getIdVerifBioMol()).getValue());
					vbm.setFin((Long) tFinAVqPCR.get(vbm.getIdVerifBioMol()).getValue());
					vbm.setGeneInteret(tGeneAVerifBM.get(vbm.getIdVerifBioMol()).getText());
					vbm.setGeneRef(tGeneRefqPCR.get(vbm.getIdVerifBioMol()).getText());
					vbm.setTechnique(tTechniqueBM.get(vbm.getIdVerifBioMol()).getText());
					if (vbm.getVersionGenome() == null) {
						vbm.setVersionGenome("hg19");
					}

				}
				for (Entry<String, ZoneTesteeBiomol> entry : ztbms.entrySet()) {
					String key = entry.getKey();
					if (tDebutztb != null) {
						ZoneTesteeBiomol ztbm = entry.getValue();
						ztbm.setDebut((Long) tDebutztb.get(key).getValue());
						ztbm.setFin((Long) tFinztb.get(key).getValue());
						ztbm.setExon(tExonPosztb.get(key).getText());
						int detec = -1;
						int i = 0;
						for (String det : detectes) {
							if (comboAnoConfirmeeztb.get(key).getText().equals(det)) {
								detec = i;
							}
							i++;
						}
						ztbm.setDetecte(detec);
						ztbm.setLibelle(tNomPosztb.get(key).getText());
						if (ztbm.getVersionGenome() == null) {
							ztbm.setVersionGenome("hg19");
						}
						liteZone.add(ztbm);
					}
				}
			} else {
				return null;
			}
			return new Object[] { rbm, lvbm, liteZone };
		} else
			return null;
	}

	public Object[] recupererRenduFishExpFish() {
		List<ExpFish> liteZone = new ArrayList<ExpFish>();

		if (rf != null) {
			if (verifierChampRenduFish()) {

				if (rf.getBuild() == null) {
					rf.setBuild("hg19");
				}

				rf.setDateRedaction((Date) dRedaction.getValue());
				if (btnRedige.getSelection()) {
					rf.setValide(1);
					if (dateRendu.getValue() != null) {
						rf.setValide(3);
						rf.setDateSignature((Date) dateRendu.getValue());
					}
				} else {
					rf.setValide(0);
				}
				for (VerifFish vf : lvf) {
					vf.setDateVerif((Date) dRealisationFish.get(vf.getIdVerifFish()).getValue());
					vf.setDetecte(btConfirmeFish.get(vf.getIdVerifFish()).getSelection());
					vf.setHerite(comboOrigineParentaleFish.get(vf.getIdVerifFish()).getText());
				}
				for (Entry<String, ExpFish> entry : expFishs.entrySet()) {
					String key = entry.getKey();
					if (bAnoConfirmeeef != null && bAnoConfirmeeef.containsKey(key) && bAnoConfirmeeef.get(key).getText() != null) {
						ExpFish expf = entry.getValue();
						if (bAnoConfirmeeef != null && bAnoConfirmeeef.containsKey(key) && bAnoConfirmeeef.get(key).getText() != null) {
							expf.setDetecte(bAnoConfirmeeef.get(key).getSelection());
						}
						if (tlocSonde1ef != null && tlocSonde1ef.containsKey(key) && tlocSonde1ef.get(key).getText() != null) {
							expf.setLocalisation1(tlocSonde1ef.get(key).getText());
						} else {
							expf.setLocalisation1(null);
						}
						if (tlocSonde2ef != null && tlocSonde2ef.containsKey(key) && tlocSonde2ef.get(key).getText() != null) {
							expf.setLocalisation2(tlocSonde2ef.get(key).getText());
						} else {
							expf.setLocalisation2(null);
						}
						if (tnbMitoseef != null && tnbMitoseef.containsKey(key) && tnbMitoseef.get(key).getValue() != null) {
							expf.setNbMitose(((Long) tnbMitoseef.get(key).getValue()).toString());
						} else {
							expf.setNbMitose(null);
						}
						if (tnbNoyauxef != null && tnbNoyauxef.containsKey(key) && tnbNoyauxef.get(key).getValue() != null) {
							expf.setNbNoyau(((Long) tnbNoyauxef.get(key).getValue()).toString());
						} else {
							expf.setNbNoyau(null);
						}
						if (tnbPhotoef != null && tnbPhotoef.containsKey(key) && tnbPhotoef.get(key).getValue() != null) {
							expf.setNbPhoto(((Long) tnbPhotoef.get(key).getValue()).toString());
						} else {
							expf.setNbPhoto(null);
						}
						if (tNbSignauxSonde1ef != null && tNbSignauxSonde1ef.containsKey(key) && tNbSignauxSonde1ef.get(key).getValue() != null) {
							expf.setNbSignaux1(((Long) tNbSignauxSonde1ef.get(key).getValue()).toString());
						} else {
							expf.setNbSignaux1(null);
						}
						if (tNbSignauxSonde2ef != null && tNbSignauxSonde2ef.containsKey(key) && tNbSignauxSonde2ef.get(key).getValue() != null) {
							expf.setNbSignaux2(((Long) tNbSignauxSonde2ef.get(key).getValue()).toString());
						} else {
							expf.setNbSignaux2(null);
						}
						if (tSonde1ef != null && tSonde1ef.containsKey(key) && tSonde1ef.get(key).getText() != null) {
							expf.setSonde1(tSonde1ef.get(key).getText());
						} else {
							expf.setSonde1(null);
						}
						if (tSonde2ef != null && tSonde2ef.containsKey(key) && tSonde2ef.get(key).getText() != null) {
							expf.setSonde2(tSonde2ef.get(key).getText());
						} else {
							expf.setSonde2(null);
						}
						if (tVersion2ef != null && tVersion2ef.containsKey(key) && tVersion2ef.get(key).getText() != null) {
							expf.setVersionSonde(tVersion2ef.get(key).getText());
						}
						liteZone.add(expf);
					}
				}
			} else {
				return null;
			}
			return new Object[] { rf, lvf, liteZone };
		} else
			return null;
	}

	public RenduPuce recupererRenduPuce() {
		if (renduPuce != null) {
			if (verifierChampRenduPuce()) {

				if (tResolution.getText() != null) {
					renduPuce.setResolution(tResolution.getText());
				}
				if (tANoter.getText() != null) {
					renduPuce.setAnoter(tANoter.getText());
				}
				if (renduPuce.getBuild() == null) {
					renduPuce.setBuild("hg19");
				}
				renduPuce.setDateRedaction((Date) dRedaction.getValue());

				ISelection selectionTPE = comboTypePlanExp.getSelection();
				if (!selectionTPE.isEmpty()) {
					IStructuredSelection structuredSelection = (IStructuredSelection) selectionTPE;
					renduPuce.setTypePlanExp((TypePlanExp) structuredSelection.getFirstElement());
				}
			} else {
				return null;
			}
			return renduPuce;
		} else
			return null;
	}

	private void removeDirtyListener() {

		btnDossierUrgent.removeSelectionListener(selectionListener);
		tUrgent.removeModifyListener(modifyListener);
		comboTypeAnalyse.getCombo().removeModifyListener(modifyListener);

		if (comboTechnicienne != null) {
			comboTechnicienne.getCombo().removeModifyListener(modifyListener);
		}

		tUFExec.removeModifyListener(modifyListener);

		if (dateTechnique != null) {
			dateTechnique.getControl().removeModifyListener(modifyListener);
		}
		if (btnAjouterUnResultat != null) {
			btnAjouterUnResultat.removeSelectionListener(selectionListener);
		}
		if (dateRendu != null) {
			dateRendu.getControl().removeModifyListener(modifyListener);
			if (comboTypeRenduNb != null) {
				comboTypeRenduNb.getCombo().removeModifyListener(modifyListener);
				comboTypeRenduStr.getCombo().removeModifyListener(modifyListener);
			}
			comboSignataire.getCombo().removeModifyListener(modifyListener);

			if (btnCheckMosaique != null) {
				btnCheckMosaique.removeSelectionListener(selectionListener);
			}
			btnRadioNonRendu.removeSelectionListener(selectionListener);
			btnRadioNormal.removeSelectionListener(selectionListener);
			btnRadioAnomal.removeSelectionListener(selectionListener);
			btnRadioEchec.removeSelectionListener(selectionListener);
			btnRadioAnnule.removeSelectionListener(selectionListener);
			tCommentaire.removeModifyListener(modifyListener);
			if (tFormule != null) {
				tFormule.removeModifyListener(modifyListener);
			}
			if (btnRadioEquilibre != null) {
				btnRadioEquilibre.removeSelectionListener(selectionListener);
			}
			if (btnRadioDesequilibre != null) {
				btnRadioDesequilibre.removeSelectionListener(selectionListener);
			}
			if (btnRadioHMere != null) {
				btnRadioHMere.removeSelectionListener(selectionListener);
			}
			if (btnRadioNHMere != null) {
				btnRadioNHMere.removeSelectionListener(selectionListener);
			}
			if (btnRadioHPere != null) {
				btnRadioHPere.removeSelectionListener(selectionListener);
			}
			if (btnRadioNHPere != null) {
				btnRadioNHPere.removeSelectionListener(selectionListener);
			}
			if (btnRadioH2 != null) {
				btnRadioH2.removeSelectionListener(selectionListener);
			}
			if (btnRadioDeNovo != null) {
				btnRadioDeNovo.removeSelectionListener(selectionListener);
			}
			if (btnRadioNonVerif != null) {
				btnRadioNonVerif.removeSelectionListener(selectionListener);
			}
			for (int i = 0; i < 24; i++) {
				if (btnCheckChromosome[i] != null) {
					btnCheckChromosome[i].removeSelectionListener(selectionListener);
				}
			}
		}

		if (dVerification != null && !dVerification.getControl().isDisposed()) {
			dVerification.getControl().removeModifyListener(modifyListener);
		}
		if (tANoter != null && !tANoter.isDisposed()) {
			tANoter.removeModifyListener(modifyListener);
		}
		if (tResolution != null && !tResolution.isDisposed()) {
			tResolution.removeModifyListener(modifyListener);
		}
		if (comboTypePlanExp != null && !comboTypePlanExp.getControl().isDisposed()) {
			comboTypePlanExp.getCombo().removeModifyListener(modifyListener);
		}
		if (dRedaction != null && !dRedaction.getControl().isDisposed()) {
			dRedaction.getControl().removeModifyListener(modifyListener);
		}
		if (btnRedige != null && !btnRedige.isDisposed()) {
			btnRedige.removeSelectionListener(selectionListener);
		}
		if (btnSigne != null && !btnSigne.isDisposed()) {
			btnSigne.removeSelectionListener(selectionListener);
		}
		if (btnVerifie != null && !btnVerifie.isDisposed()) {
			btnVerifie.removeSelectionListener(selectionListener);
		}
		if (comboVerificateur != null && !comboVerificateur.getControl().isDisposed()) {
			comboVerificateur.getCombo().removeModifyListener(modifyListener);
		}
		for (Entry<Integer, FormattedText> dReaFish : dRealisationFish.entrySet()) {
			if (dReaFish != null && dReaFish.getValue() != null && !dReaFish.getValue().getControl().isDisposed()) {
				dReaFish.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> btConfFish : btConfirmeFish.entrySet()) {
			if (btConfFish != null && btConfFish.getValue() != null && !btConfFish.getValue().isDisposed()) {
				btConfFish.getValue().removeSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, Combo> comboOriParentaleFish : comboOrigineParentaleFish.entrySet()) {
			if (comboOriParentaleFish != null && comboOriParentaleFish.getValue() != null && !comboOriParentaleFish.getValue().isDisposed()) {
				comboOriParentaleFish.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Combo> comboOriParentalebm : comboOrigineParentaleBM.entrySet()) {
			if (comboOriParentalebm != null && comboOriParentalebm.getValue() != null && !comboOriParentalebm.getValue().isDisposed()) {
				comboOriParentalebm.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> bAjSondeFish : bAjouterSondeFish.entrySet()) {
			if (bAjSondeFish != null && bAjSondeFish.getValue() != null && !bAjSondeFish.getValue().isDisposed()) {
				bAjSondeFish.getValue().removeSelectionListener(selectionListener);
			}
		}
		for (Entry<String, Combo> bAnoConfztb : comboAnoConfirmeeztb.entrySet()) {
			if (bAnoConfztb != null && bAnoConfztb.getValue() != null && !bAnoConfztb.getValue().isDisposed()) {
				bAnoConfztb.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Button> bAjZoneHorsBM : bAjouterZoneHorsBM.entrySet()) {
			if (bAjZoneHorsBM != null && bAjZoneHorsBM.getValue() != null && !bAjZoneHorsBM.getValue().isDisposed()) {
				bAjZoneHorsBM.getValue().removeSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, Button> bAjZoneDansBM : bAjouterZoneDansBM.entrySet()) {
			if (bAjZoneDansBM != null && bAjZoneDansBM.getValue() != null && !bAjZoneDansBM.getValue().isDisposed()) {
				bAjZoneDansBM.getValue().removeSelectionListener(selectionListener);
			}
		}
		for (Entry<String, Button> bAnoConfef : bAnoConfirmeeef.entrySet()) {
			if (bAnoConfef != null && bAnoConfef.getValue() != null && !bAnoConfef.getValue().isDisposed()) {
				bAnoConfef.getValue().removeSelectionListener(selectionListener);
			}
		}
		for (Entry<Integer, FormattedText> dReabm : dRealisationBM.entrySet()) {
			if (dReabm != null && dReabm.getValue() != null && !dReabm.getValue().getControl().isDisposed()) {
				dReabm.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, FormattedText> tDebAVqPCR : tDebutAVqPCR.entrySet()) {
			if (tDebAVqPCR != null && tDebAVqPCR.getValue() != null && !tDebAVqPCR.getValue().getControl().isDisposed()) {
				tDebAVqPCR.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, FormattedText> tFinPCR : tFinAVqPCR.entrySet()) {
			if (tFinPCR != null && tFinPCR.getValue() != null && !tFinPCR.getValue().getControl().isDisposed()) {
				tFinPCR.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tDebztb : tDebutztb.entrySet()) {
			if (tDebztb != null && tDebztb.getValue() != null && !tDebztb.getValue().getControl().isDisposed()) {
				tDebztb.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tFztb : tFinztb.entrySet()) {
			if (tFztb != null && tFztb.getValue() != null && !tFztb.getValue().getControl().isDisposed()) {
				tFztb.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tTztb : tTailleztb.entrySet()) {
			if (tTztb != null && tTztb.getValue() != null && !tTztb.getValue().getControl().isDisposed()) {
				tTztb.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tNbSiSonde1ef : tNbSignauxSonde1ef.entrySet()) {
			if (tNbSiSonde1ef != null && tNbSiSonde1ef.getValue() != null && !tNbSiSonde1ef.getValue().getControl().isDisposed()) {
				tNbSiSonde1ef.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tNbSiSonde2ef : tNbSignauxSonde2ef.entrySet()) {
			if (tNbSiSonde2ef != null && tNbSiSonde2ef.getValue() != null && !tNbSiSonde2ef.getValue().getControl().isDisposed()) {
				tNbSiSonde2ef.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnbPhoto : tnbPhotoef.entrySet()) {
			if (tnbPhoto != null && tnbPhoto.getValue() != null && !tnbPhoto.getValue().getControl().isDisposed()) {
				tnbPhoto.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnNoyauxef : tnbNoyauxef.entrySet()) {
			if (tnNoyauxef != null && tnNoyauxef.getValue() != null && !tnNoyauxef.getValue().getControl().isDisposed()) {
				tnNoyauxef.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, FormattedText> tnbMitef : tnbMitoseef.entrySet()) {
			if (tnbMitef != null && tnbMitef.getValue() != null && !tnbMitef.getValue().getControl().isDisposed()) {
				tnbMitef.getValue().getControl().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Combo> btConfBM : comboConfirmeBM.entrySet()) {
			if (btConfBM != null && btConfBM.getValue() != null && !btConfBM.getValue().isDisposed()) {
				btConfBM.getValue().removeModifyListener(modifyListener);
			}
		}

		for (Entry<Integer, Text> tTechBM : tTechniqueBM.entrySet()) {
			if (tTechBM != null && tTechBM.getValue() != null && !tTechBM.getValue().isDisposed()) {
				tTechBM.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Text> tGeneRqPCR : tGeneRefqPCR.entrySet()) {
			if (tGeneRqPCR != null && tGeneRqPCR.getValue() != null && !tGeneRqPCR.getValue().isDisposed()) {
				tGeneRqPCR.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<Integer, Text> tGeneAVBM : tGeneAVerifBM.entrySet()) {
			if (tGeneAVBM != null && tGeneAVBM.getValue() != null && !tGeneAVBM.getValue().isDisposed()) {
				tGeneAVBM.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tNomPztb : tNomPosztb.entrySet()) {
			if (tNomPztb != null && tNomPztb.getValue() != null && !tNomPztb.getValue().isDisposed()) {
				tNomPztb.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tExPosztb : tExonPosztb.entrySet()) {
			if (tExPosztb != null && tExPosztb.getValue() != null && !tExPosztb.getValue().isDisposed()) {
				tExPosztb.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tS1ef : tSonde1ef.entrySet()) {
			if (tS1ef != null && tS1ef.getValue() != null && !tS1ef.getValue().isDisposed()) {
				tS1ef.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tlocSnde1ef : tlocSonde1ef.entrySet()) {
			if (tlocSnde1ef != null && tlocSnde1ef.getValue() != null && !tlocSnde1ef.getValue().isDisposed()) {
				tlocSnde1ef.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tSnde2ef : tSonde2ef.entrySet()) {
			if (tSnde2ef != null && tSnde2ef.getValue() != null && !tSnde2ef.getValue().isDisposed()) {
				tSnde2ef.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tlocSde2ef : tlocSonde2ef.entrySet()) {
			if (tlocSde2ef != null && tlocSde2ef.getValue() != null && !tlocSde2ef.getValue().isDisposed()) {
				tlocSde2ef.getValue().removeModifyListener(modifyListener);
			}
		}
		for (Entry<String, Text> tV2ef : tVersion2ef.entrySet()) {
			if (tV2ef != null && tV2ef.getValue() != null && !tV2ef.getValue().isDisposed()) {
				tV2ef.getValue().removeModifyListener(modifyListener);
			}
		}

		// caryo
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
			if (tResolutionCaryo != null) {
				tResolutionCaryo.removeModifyListener(modifyListener);
			}
			if (btnMarquage != null) {
				for (String mq : ApplicationContexte.marquageCaryo) {
					if (btnMarquage.get(mq) != null) {
						btnMarquage.get(mq).removeSelectionListener(selectionListener);
					}
				}
			}
			if (tMitosesClassees != null) {
				tMitosesClassees.getControl().removeModifyListener(modifyListener);
			}
			if (tMitosesExaminees != null) {
				tMitosesExaminees.getControl().removeModifyListener(modifyListener);
			}
			if (tColonies != null) {
				tColonies.getControl().removeModifyListener(modifyListener);
			}
			if (tChambresCultures != null) {
				tChambresCultures.getControl().removeModifyListener(modifyListener);
			}
			if (tNbApresED != null) {
				tNbApresED.getControl().removeModifyListener(modifyListener);
			}
			if (tNbApresCult != null) {
				tNbApresCult.getControl().removeModifyListener(modifyListener);
			}
			if (cIndexMito != null) {
				cIndexMito.removeModifyListener(modifyListener);
			}
			if (clChr != null) {
				clChr.removeModifyListener(modifyListener);
			}
			if (cCytoplasme != null) {
				cCytoplasme.removeModifyListener(modifyListener);
			}
			if (cMitosesEclat != null) {
				cMitosesEclat.removeModifyListener(modifyListener);
			}
			if (cBandeR != null) {
				cBandeR.removeModifyListener(modifyListener);
			}
			if (cBandeG != null) {
				cBandeG.removeModifyListener(modifyListener);
			}
			if (tResolutionCaryoTech != null) {
				tResolutionCaryoTech.removeModifyListener(modifyListener);
			}
			if (tFormuleTech != null) {
				tFormuleTech.removeModifyListener(modifyListener);
			}
			if (tRemarqueTech != null) {
				tRemarqueTech.removeModifyListener(modifyListener);
			}
			if (comboTechChoc != null) {
				comboTechChoc.getCombo().removeModifyListener(modifyListener);
			}
			if (comboTechDenat != null) {
				comboTechDenat.getCombo().removeModifyListener(modifyListener);
			}
			if (comboTechEtalement != null) {
				comboTechEtalement.getCombo().removeModifyListener(modifyListener);
			}
			if (comboTechMiseEnCult != null) {
				comboTechMiseEnCult.getCombo().removeModifyListener(modifyListener);
			}
		}

		// FISH
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5)) {

			if (tSondeFish != null) {
				tSondeFish.removeModifyListener(modifyListener);
			}
			if (tMotifFish != null) {
				tMotifFish.removeModifyListener(modifyListener);
			}
			if (tNbMitoseFish != null) {
				tNbMitoseFish.getControl().removeModifyListener(modifyListener);
			}
			if (tNbNoyauxFish != null) {
				tNbNoyauxFish.getControl().removeModifyListener(modifyListener);
			}
		}

		// Micorsat
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 6)) {
			if (tNbMqInfo != null) {
				tNbMqInfo.getControl().removeModifyListener(modifyListener);
			}
			if (tNbMqNonInfo != null) {
				tNbMqNonInfo.getControl().removeModifyListener(modifyListener);
			}
			if (tNbMqExclus != null) {
				tNbMqExclus.getControl().removeModifyListener(modifyListener);
			}
			if (btnRadioSexeF != null) {
				btnRadioSexeF.removeSelectionListener(selectionListener);
			}
			if (btnRadioSexeM != null) {
				btnRadioSexeM.removeSelectionListener(selectionListener);
			}
			if (btnRadioSexeNA != null) {
				btnRadioSexeNA.removeSelectionListener(selectionListener);
			}
			if (comboContamination != null) {
				comboContamination.removeModifyListener(modifyListener);
			}
		}
		if (btnPlusFish != null) {
			btnPlusFish.removeSelectionListener(selectionListener);
		}
		if (comboTypeFish != null) {
			comboTypeFish.removeModifyListener(modifyListener);
		}

	}

	public void remplir(Analyse analyse) {
		removeDirtyListener();
		this.analyse = analyse;
		if (dateTechnique == null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() != 1 && analyse.getTypeAnalyse().getIdTypeAnalyse() != 7)) {
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateTechnique")) {

				Label lblDateDeTechnique = new Label(grpAnalyse, SWT.NONE);
				lblDateDeTechnique.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblDateDeTechnique.setText("Date de la technique :");

				dateTechnique = new FormattedText(grpAnalyse, SWT.BORDER);
				GridData gridData_dateTechnique = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_dateTechnique.widthHint = 75;
				dateTechnique.getControl().setLayoutData(gridData_dateTechnique);
				dateTechnique.setFormatter(new DateFormatter("dd/MM/yyyy"));
			}
			if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne")) {

				Label lblTechnicienne = new Label(grpAnalyse, SWT.NONE);
				lblTechnicienne.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblTechnicienne.setText("Technicienne :");

				comboTechnicienne = new ComboViewer(grpAnalyse, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTechnicienne.setContentProvider(ArrayContentProvider.getInstance());
				comboTechnicienne.setLabelProvider(new UtilisateurLabelProvider());
			}
		}
		tUrgent.setText("");
		// comboTypeAnalyse.setSelection(null);
		// comboPrescripteur.setSelection(null);
		if (dateTechnique != null) {
			dateTechnique.setValue(null);
		}

		secteur = PrelevementServiceImpl.getInstance().getSecteurByIdPrelevement(analyse.getPrelevement().getIdPrelevement());
		ArrayList<TypeAnalyse> listTypeAnalyses = ReferentielServiceImpl.getInstance().getTypeAnalyseByPrelevement(analyse.getPrelevement().getIdPrelevement());
		Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
		comboTypeAnalyse.setInput(listTypeAnalyses);
		comboTypeAnalyse.getCombo().pack(true);

		if (analyse.getIdAnalyse() != 0) {
			if (analyse.getTypeAnalyse() != null) {
				analyseTabItem.setText(analyse.getTypeAnalyse().getLibelle().substring(0, 3) + "-" + prel.getNumeroPrelevement());
			}

			btnDossierUrgent.setSelection(analyse.isUrgent());
			if (analyse.getRaisonUrgent() != null) {
				tUrgent.setText(analyse.getRaisonUrgent());
			}
			if (analyse.getTypeAnalyse() != null) {
				comboTypeAnalyse.setSelection(new StructuredSelection(analyse.getTypeAnalyse()), true);
				ArrayList<Utilisateur> listTechniciennes = UtilisateurServiceImpl.getInstance().getTechnicienneByTypeAnalyse(analyse.getTypeAnalyse().getIdTypeAnalyse());
				if (comboTechnicienne != null) {
					comboTechnicienne.setInput(listTechniciennes);
				}
				if (comboTechChoc != null) {
					comboTechChoc.setInput(listTechniciennes);
				}
				if (comboTechDenat != null) {
					comboTechDenat.setInput(listTechniciennes);
				}
				if (comboTechEtalement != null) {
					comboTechEtalement.setInput(listTechniciennes);
				}
				if (comboTechMiseEnCult != null) {
					comboTechMiseEnCult.setInput(listTechniciennes);
				}
			}

			if (analyse.getUfExec() != null) {
				tUFExec.setText("" + analyse.getUfExec());
			} else {
				if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PRENATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_POSTNATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_FOETO))) {
					tUFExec.setText("" + 4076);
				}
				if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_PRENATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_POSTNATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_FOETO))) {
					tUFExec.setText("" + 4274);
				}
				if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_CELLULES))) {
					tUFExec.setText("" + 4252);
				}
				if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_BANQUE))) {
					tUFExec.setText("" + 4273);
				}
			}

			if (analyse.getDateTechnique() != null && dateTechnique != null) {
				dateTechnique.setValue(analyse.getDateTechnique());
			}

			// ajout de la technique de caryotype
			if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) && grpCaryotype == null) {
				grpCaryotype = new Group(grpAnalyse, SWT.NONE);
				grpCaryotype.setText("Caryotype");
				grpCaryotype.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
				grpCaryotype.setLayout(new GridLayout(2, false));

				Label lblMiseEnCult = new Label(grpCaryotype, SWT.NONE);
				lblMiseEnCult.setFont(SWTResourceManager.getFont("Segoe UI", 10, SWT.BOLD));
				lblMiseEnCult.setText("Mise en culture par :");
				GridData gridData_lblMiseEnCult = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				lblMiseEnCult.setLayoutData(gridData_lblMiseEnCult);

				comboTechMiseEnCult = new ComboViewer(grpCaryotype, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTechMiseEnCult.setContentProvider(ArrayContentProvider.getInstance());
				comboTechMiseEnCult.setLabelProvider(new UtilisateurLabelProvider());
				GridData gridData_comboTechMiseEnCult = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
				gridData_comboTechMiseEnCult.widthHint = 150;
				comboTechMiseEnCult.getCombo().setLayoutData(gridData_comboTechMiseEnCult);

				Label lblChoc = new Label(grpCaryotype, SWT.NONE);
				lblChoc.setFont(SWTResourceManager.getFont("Segoe UI", 10, SWT.BOLD));
				lblChoc.setText("Choc par :");
				GridData gridData_lblChoc = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				lblChoc.setLayoutData(gridData_lblChoc);

				comboTechChoc = new ComboViewer(grpCaryotype, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTechChoc.setContentProvider(ArrayContentProvider.getInstance());
				comboTechChoc.setLabelProvider(new UtilisateurLabelProvider());
				GridData gridData_comboTechChoc = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
				gridData_comboTechChoc.widthHint = 150;
				comboTechChoc.getCombo().setLayoutData(gridData_comboTechChoc);

				Label lblTypeMarquage = new Label(grpCaryotype, SWT.NONE);
				lblTypeMarquage.setFont(SWTResourceManager.getFont("Segoe UI", 11, SWT.BOLD));
				lblTypeMarquage.setText("Type de marquage :");

				Composite cmq = new Composite(grpCaryotype, SWT.NONE);
				cmq.setLayout(new RowLayout());
				for (String mq : ApplicationContexte.marquageCaryo) {
					Button btnMq = new Button(cmq, SWT.CHECK);
					btnMq.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
					btnMq.setText(mq);
					btnMarquage.put(mq, btnMq);
				}

				Label lblQualiteDossier = new Label(grpCaryotype, SWT.NONE);
				lblQualiteDossier.setFont(SWTResourceManager.getFont("Segoe UI", 11, SWT.BOLD));
				lblQualiteDossier.setText("Qualité du dossier :");
				GridData gridData_lblQualiteDossier = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
				lblQualiteDossier.setLayoutData(gridData_lblQualiteDossier);

				Label lblEtalement = new Label(grpCaryotype, SWT.NONE);
				lblEtalement.setFont(SWTResourceManager.getFont("Segoe UI", 10, SWT.BOLD));
				lblEtalement.setText("Etalement :");
				GridData gridData_lblEtalement = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				lblEtalement.setLayoutData(gridData_lblEtalement);

				comboTechEtalement = new ComboViewer(grpCaryotype, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTechEtalement.setContentProvider(ArrayContentProvider.getInstance());
				comboTechEtalement.setLabelProvider(new UtilisateurLabelProvider());
				GridData gridData_comboTechEtalement = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
				gridData_comboTechEtalement.widthHint = 150;
				comboTechEtalement.getCombo().setLayoutData(gridData_comboTechEtalement);

				Label lblindexMito = new Label(grpCaryotype, SWT.NONE);
				lblindexMito.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblindexMito.setText("Index mitotique :");

				cIndexMito = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_cIndexMito = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_cIndexMito.widthHint = 150;
				cIndexMito.setLayoutData(gridData_cIndexMito);
				cIndexMito.setItems(new String[] { "+", "+/-", "-" });

				Label lbllChr = new Label(grpCaryotype, SWT.NONE);
				lbllChr.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lbllChr.setText("Longueur des chromosomes :");

				clChr = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_clbllChr = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_clbllChr.widthHint = 150;
				clChr.setLayoutData(gridData_clbllChr);
				clChr.setItems(new String[] { "+", "+/-", "-" });

				Label lblCytoplasme = new Label(grpCaryotype, SWT.NONE);
				lblCytoplasme.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblCytoplasme.setText("Cytoplasme :");

				cCytoplasme = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_cCytoplasme = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_cCytoplasme.widthHint = 150;
				cCytoplasme.setLayoutData(gridData_cCytoplasme);
				cCytoplasme.setItems(new String[] { "+", "+/-", "-" });

				Label lblMitosesEclat = new Label(grpCaryotype, SWT.NONE);
				lblMitosesEclat.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMitosesEclat.setText("Mitoses éctatée :");

				cMitosesEclat = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_cMitosesEclat = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_cMitosesEclat.widthHint = 150;
				cMitosesEclat.setLayoutData(gridData_cMitosesEclat);
				cMitosesEclat.setItems(new String[] { "+", "+/-", "-" });

				Label lblDenaturation = new Label(grpCaryotype, SWT.NONE);
				lblDenaturation.setFont(SWTResourceManager.getFont("Segoe UI", 10, SWT.BOLD));
				lblDenaturation.setText("Dénaturation par :");
				GridData gridData_lblDenaturation = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				lblDenaturation.setLayoutData(gridData_lblDenaturation);

				comboTechDenat = new ComboViewer(grpCaryotype, SWT.DROP_DOWN | SWT.READ_ONLY);
				comboTechDenat.setContentProvider(ArrayContentProvider.getInstance());
				comboTechDenat.setLabelProvider(new UtilisateurLabelProvider());
				GridData gridData_comboTechDenat = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
				gridData_comboTechDenat.widthHint = 150;
				comboTechDenat.getCombo().setLayoutData(gridData_comboTechDenat);

				Label lblBandesR = new Label(grpCaryotype, SWT.NONE);
				lblBandesR.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblBandesR.setText("Bandes R :");

				cBandeR = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_cBandeR = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_cBandeR.widthHint = 150;
				cBandeR.setLayoutData(gridData_cBandeR);
				cBandeR.setItems(new String[] { "+", "+/-", "-" });

				Label lblBandesG = new Label(grpCaryotype, SWT.NONE);
				lblBandesG.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblBandesG.setText("Bandes G :");

				cBandeG = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_cBandeG = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_cBandeG.widthHint = 150;
				cBandeG.setLayoutData(gridData_cBandeG);
				cBandeG.setItems(new String[] { "+", "+/-", "-" });

				Label lblCclTech = new Label(grpCaryotype, SWT.NONE);
				lblCclTech.setFont(SWTResourceManager.getFont("Segoe UI", 11, SWT.BOLD));
				lblCclTech.setText("Conclusion technique :");
				GridData gridData_lblCclTech = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
				lblCclTech.setLayoutData(gridData_lblCclTech);

				if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateTechnique")) {

					Label lblDateDeTechnique = new Label(grpCaryotype, SWT.NONE);
					lblDateDeTechnique.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
					lblDateDeTechnique.setText("Date de la lecture :");

					dateTechnique = new FormattedText(grpCaryotype, SWT.BORDER);
					GridData gridData_dateTechnique = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
					gridData_dateTechnique.widthHint = 75;
					dateTechnique.getControl().setLayoutData(gridData_dateTechnique);
					dateTechnique.setFormatter(new DateFormatter("dd/MM/yyyy"));
					if (analyse.getDateTechnique() != null && dateTechnique != null) {
						dateTechnique.setValue(analyse.getDateTechnique());
					}

				}
				if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne")) {

					Label lblTechnicienne = new Label(grpCaryotype, SWT.NONE);
					lblTechnicienne.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
					lblTechnicienne.setText("Lu par :");

					comboTechnicienne = new ComboViewer(grpCaryotype, SWT.DROP_DOWN | SWT.READ_ONLY);
					comboTechnicienne.setContentProvider(ArrayContentProvider.getInstance());
					comboTechnicienne.setLabelProvider(new UtilisateurLabelProvider());
					GridData gridData_comboTechnicienne = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
					gridData_comboTechnicienne.widthHint = 150;
					comboTechnicienne.getCombo().setLayoutData(gridData_comboTechnicienne);
				}
				Label lblResolutionTech = new Label(grpCaryotype, SWT.NONE);
				lblResolutionTech.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblResolutionTech.setText("Estimation de la résolution :");

				tResolutionCaryoTech = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_tResolutionCaryoTech = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tResolutionCaryoTech.widthHint = 150;
				tResolutionCaryoTech.setLayoutData(gridData_tResolutionCaryoTech);
				tResolutionCaryoTech.setItems(ApplicationContexte.resolutionCaryo);

				Label lblFormuleTech = new Label(grpCaryotype, SWT.NONE);
				lblFormuleTech.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblFormuleTech.setText("Formule Chromosomique :");

				tFormuleTech = new Text(grpCaryotype, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
				GridData gridData_tFormuleTech = new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1);
				gridData_tFormuleTech.widthHint = 500;
				gridData_tFormuleTech.heightHint = 50;
				tFormuleTech.setLayoutData(gridData_tFormuleTech);

				Label lblRemarqueTech = new Label(grpCaryotype, SWT.NONE);
				lblRemarqueTech.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblRemarqueTech.setText("Remarques :");

				tRemarqueTech = new Text(grpCaryotype, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
				GridData gridData_tRemarqueTech = new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1);
				gridData_tRemarqueTech.widthHint = 500;
				gridData_tRemarqueTech.heightHint = 100;
				tRemarqueTech.setLayoutData(gridData_tRemarqueTech);

				Label lblCclBio = new Label(grpCaryotype, SWT.NONE);
				lblCclBio.setFont(SWTResourceManager.getFont("Segoe UI", 11, SWT.BOLD));
				lblCclBio.setText("Validation biologique :");
				GridData gridData_lblCclBio = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
				lblCclBio.setLayoutData(gridData_lblCclBio);

				Label lblResolution = new Label(grpCaryotype, SWT.NONE);
				lblResolution.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblResolution.setText("Estimation de la résolution :");

				tResolutionCaryo = new Combo(grpCaryotype, SWT.SINGLE | SWT.READ_ONLY);
				GridData gridData_tResolutionCaryo = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tResolutionCaryo.widthHint = 150;
				tResolutionCaryo.setLayoutData(gridData_tResolutionCaryo);
				tResolutionCaryo.setItems(ApplicationContexte.resolutionCaryo);

				Label lblMitosesExaminees = new Label(grpCaryotype, SWT.NONE);
				// lblMitosesExaminees.setLayoutData(new GridData(SWT.RIGHT,
				// SWT.CENTER, true, false, 1, 1));
				lblMitosesExaminees.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMitosesExaminees.setText("Nombre de mitoses captées examinées :");

				tMitosesExaminees = new FormattedText(grpCaryotype, SWT.BORDER);
				GridData gridData_tMitosesExaminees = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tMitosesExaminees.widthHint = 50;
				tMitosesExaminees.getControl().setLayoutData(gridData_tMitosesExaminees);
				tMitosesExaminees.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				if (analyse != null && secteur != null && secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PRENATAL)) {

					Label lblColonies = new Label(grpCaryotype, SWT.NONE);
					// lblColonies.setLayoutData(new GridData(SWT.RIGHT,
					// SWT.CENTER, true, false, 1, 1));
					lblColonies.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
					lblColonies.setText("provenant de combien de colonies :");

					tColonies = new FormattedText(grpCaryotype, SWT.BORDER);
					GridData gridData_tColonies = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
					gridData_tColonies.widthHint = 50;
					tColonies.getControl().setLayoutData(gridData_tColonies);
					tColonies.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

					if (prel.getNumeroPrelevement().contains("LA")) {
						Label lblChambesCultures = new Label(grpCaryotype, SWT.NONE);
						// lblChambesCultures.setLayoutData(new
						// GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
						lblChambesCultures.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
						lblChambesCultures.setText("Nombre de chambres de cultures :");

						tChambresCultures = new FormattedText(grpCaryotype, SWT.BORDER);
						GridData gridData_tChambresCultures = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
						gridData_tChambresCultures.widthHint = 50;
						tChambresCultures.getControl().setLayoutData(gridData_tChambresCultures);
						tChambresCultures.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
					}

					if (prel.getNumeroPrelevement().contains("VC") && (analyse.getTypeAnalyse().getLibelle().equals("caryotype en examen direct + culture") || analyse.getTypeAnalyse().getLibelle().equals("caryotype"))) {
						Label lblChambesCultures = new Label(grpCaryotype, SWT.NONE);
						// lblChambesCultures.setLayoutData(new
						// GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
						lblChambesCultures.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
						lblChambesCultures.setText("Nombre de cultures :");

						tChambresCultures = new FormattedText(grpCaryotype, SWT.BORDER);
						GridData gridData_tChambresCultures = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
						gridData_tChambresCultures.widthHint = 50;
						tChambresCultures.getControl().setLayoutData(gridData_tChambresCultures);
						tChambresCultures.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
					}
					if (analyse.getTypeAnalyse().getLibelle().equals("caryotype en examen direct + culture")) {
						Label lblNbApresED = new Label(grpCaryotype, SWT.NONE);
						// lblNbApresED.setLayoutData(new GridData(SWT.RIGHT,
						// SWT.CENTER, true, false, 1, 1));
						lblNbApresED.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
						lblNbApresED.setText("Nombre de cultures :");

						tNbApresED = new FormattedText(grpCaryotype, SWT.BORDER);
						GridData gridData_tNbApresED = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
						gridData_tNbApresED.widthHint = 50;
						tNbApresED.getControl().setLayoutData(gridData_tNbApresED);
						tNbApresED.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

						Label lblChambesCultures = new Label(grpCaryotype, SWT.NONE);
						// lblChambesCultures.setLayoutData(new
						// GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
						lblChambesCultures.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
						lblChambesCultures.setText("Nombre de cultures :");

						tNbApresCult = new FormattedText(grpCaryotype, SWT.BORDER);
						GridData gridData_tNbApresCult = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
						gridData_tNbApresCult.widthHint = 50;
						tNbApresCult.getControl().setLayoutData(gridData_tNbApresCult);
						tNbApresCult.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
					}

				}

				Label lblMitosesClassees = new Label(grpCaryotype, SWT.NONE);
				// lblMitosesClassees.setLayoutData(new GridData(SWT.RIGHT,
				// SWT.CENTER, true, false, 1, 1));
				lblMitosesClassees.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMitosesClassees.setText("Nombre de mitoses classées :");

				tMitosesClassees = new FormattedText(grpCaryotype, SWT.BORDER);
				GridData gridData_tMitosesClassees = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tMitosesClassees.widthHint = 50;
				tMitosesClassees.getControl().setLayoutData(gridData_tMitosesClassees);
				tMitosesClassees.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

			}

			// ajout de la technique de FISH
			if (analyse != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) && grpFISH == null) {
				if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) {
					if (grpCaryotype != null) {
						btnPlusFish = new Button(grpCaryotype, SWT.CHECK);
						btnPlusFish.setText("Ajouter de la FISH au caryo");
						btnPlusFish.addSelectionListener(new SelectionListener() {
							@Override
							public void widgetSelected(SelectionEvent e) {
								if (btnPlusFish.getSelection()) {
									grpFISH.setVisible(true);
									((GridData) grpFISH.getLayoutData()).exclude = false;
									composite.pack();
								} else {
									grpFISH.setVisible(false);
									((GridData) grpFISH.getLayoutData()).exclude = true;
									tMotifFish.setText("");
									tSondeFish.setText("");
									tNbMitoseFish.getControl().setText("");
									tNbNoyauxFish.getControl().setText("");
									composite.pack();
								}

							}

							@Override
							public void widgetDefaultSelected(SelectionEvent e) {
								// TODO Auto-generated method stub

							}
						});

					}
				}
				grpFISH = new Group(grpAnalyse, SWT.NONE);
				grpFISH.setText("FISH");
				grpFISH.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
				grpFISH.setLayout(new GridLayout(2, false));
				Label lbcomboTypeFish = new Label(grpFISH, SWT.NONE);
				lbcomboTypeFish.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lbcomboTypeFish.setText("Type de FISH :");
				comboTypeFish = new Combo(grpFISH, SWT.SINGLE | SWT.READ_ONLY);
				comboTypeFish.setItems(ApplicationContexte.typeFish);
				GridData gridData_comboTypeFish = new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1);
				comboTypeFish.setLayoutData(gridData_comboTypeFish);
				comboTypeFish.addModifyListener(new ModifyListener() {

					@Override
					public void modifyText(ModifyEvent e) {
						String typeFish = comboTypeFish.getText();
						// T21 : LSI 13/21 Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[1])) {
							tMotifFish.setText(tMotifFish.getText() + "Trisomie 21");
							tSondeFish.setText("LSI 13/21 Aquarius");
						}
						// 22q11 : TUPLE1/TBX1
						if (typeFish.equals(ApplicationContexte.typeFish[2])) {
							tMotifFish.setText(tMotifFish.getText() + "22q11");
							tSondeFish.setText("TUPLE1/TBX1 Aquarius");
						}
						// FISH XY : DXZ1(Xq10)/DYZ3 (Yq10) Vysis
						if (typeFish.equals(ApplicationContexte.typeFish[3])) {
							tMotifFish.setText(tMotifFish.getText() + "FISH XY");
							tSondeFish.setText("DXZ1(Xq10)/DYZ3 (Yq10) Vysis");
						}
						// FISH dif sex : DXZ1(Xq10)/DYZ1 (Yq12) Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[4])) {
							tMotifFish.setText(tMotifFish.getText() + "Différencitation sexuelle");
							tSondeFish.setText("DXZ1(Xq10)/DYZ1 (Yq12) Aquarius");
						}
						// FISH Prader Willi 15q11 : SNRPN/UBE3A Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[5])) {
							tMotifFish.setText(tMotifFish.getText() + "Prader Willi");
							tSondeFish.setText("SNRPN/UBE3A Aquarius");
						}
						// Retard statural fille : DXZ1(Xq10) Métasystems
						if (typeFish.equals(ApplicationContexte.typeFish[6])) {
							tMotifFish.setText(tMotifFish.getText() + "Retard statural fille");
							tSondeFish.setText("DXZ1(Xq10) Métasystems");
						}
						// Retard statural garçon : DXZ1(Xq10)/DYZ3 (Yq10)
						// Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[7])) {
							tMotifFish.setText(tMotifFish.getText() + "Retard statural garçon");
							tSondeFish.setText("DXZ1(Xq10)/DYZ3 (Yq10) Aquarius");
						}
						// Retard statural SHOX fille :
						// SHOX(Xp22)/DXZ1(Xq10)/DYZ1(Yq12) Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[8])) {
							tMotifFish.setText(tMotifFish.getText() + "Retard statural SHOX fille");
							tSondeFish.setText("SHOX(Xp22)/DXZ1(Xq10)/DYZ1(Yq12) Aquarius");
						}
						// Retard statural SHOX garçon :
						// SHOX(Xp22/Yp11)/DXZ1(Xq10)/DYZ1(Yq12) Aquarius
						if (typeFish.equals(ApplicationContexte.typeFish[9])) {
							tMotifFish.setText(tMotifFish.getText() + "Retard statural SHOX garçon");
							tSondeFish.setText("SHOX(Xp22/Yp11)/DXZ1(Xq10)/DYZ1(Yq12) Aquarius");
						}
					}
				});

				Label lblMotifFish = new Label(grpFISH, SWT.NONE);
				lblMotifFish.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMotifFish.setText("Motif de la FISH :");

				tMotifFish = new Text(grpFISH, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
				GridData gridData_tMotifFish = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
				gridData_tMotifFish.widthHint = 200;
				gridData_tMotifFish.heightHint = 100;
				tMotifFish.setLayoutData(gridData_tMotifFish);

				Label lblSondeFish = new Label(grpFISH, SWT.NONE);
				lblSondeFish.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblSondeFish.setText("Sonde(s) utilisée(s) :");

				tSondeFish = new Text(grpFISH, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
				GridData gridData_tSondeFish = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
				gridData_tSondeFish.widthHint = 200;
				gridData_tSondeFish.heightHint = 100;
				tSondeFish.setLayoutData(gridData_tSondeFish);

				Label lblNbMitoseFish = new Label(grpFISH, SWT.NONE);
				lblNbMitoseFish.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblNbMitoseFish.setText("Nombre de métaphases/mitoses examinées :");

				tNbMitoseFish = new FormattedText(grpFISH, SWT.BORDER);
				GridData gridData_tNbMitoseFish = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tNbMitoseFish.widthHint = 50;
				tNbMitoseFish.getControl().setLayoutData(gridData_tNbMitoseFish);
				tNbMitoseFish.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				Label lblNbNoyauxFish = new Label(grpFISH, SWT.NONE);
				lblNbNoyauxFish.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
				lblNbNoyauxFish.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblNbNoyauxFish.setText("Nombre de noyaux étudiés :");

				tNbNoyauxFish = new FormattedText(grpFISH, SWT.BORDER);
				GridData gridData_tNbNoyauxFish = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
				gridData_tNbNoyauxFish.widthHint = 150;
				tNbNoyauxFish.getControl().setLayoutData(gridData_tNbNoyauxFish);
				tNbNoyauxFish.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7) {
					grpFISH.setVisible(false);
					((GridData) grpFISH.getLayoutData()).exclude = true;
					tMotifFish.setText("");
					tSondeFish.setText("");
					tNbMitoseFish.getControl().setText("");
					tNbNoyauxFish.getControl().setText("");
					composite.pack();
				}

			}
			ArrayList<Utilisateur> listTechniciennes = UtilisateurServiceImpl.getInstance().getTechnicienneByTypeAnalyse(analyse.getTypeAnalyse().getIdTypeAnalyse());
			if (comboTechnicienne != null) {
				comboTechnicienne.setInput(listTechniciennes);
			}
			if (comboTechMiseEnCult != null) {
				comboTechMiseEnCult.setInput(listTechniciennes);
			}
			if (comboTechChoc != null) {
				comboTechChoc.setInput(listTechniciennes);
			}
			if (comboTechEtalement != null) {
				comboTechEtalement.setInput(listTechniciennes);
			}
			if (comboTechDenat != null) {
				comboTechDenat.setInput(listTechniciennes);
			}
			// ajout de la technique de microsat
			if (analyse != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 6) && grpMicroSat == null) {
				grpMicroSat = new Group(grpAnalyse, SWT.NONE);
				grpMicroSat.setText("Etude de la contamination maternelle par microsatellites");
				grpMicroSat.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
				grpMicroSat.setLayout(new GridLayout(2, false));

				Label lblMqInfo = new Label(grpMicroSat, SWT.NONE);
				lblMqInfo.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMqInfo.setText("Nombre de marqueurs informatifs :");

				tNbMqInfo = new FormattedText(grpMicroSat, SWT.BORDER);
				GridData gridData_tNbMqInfo = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tNbMqInfo.widthHint = 50;
				tNbMqInfo.getControl().setLayoutData(gridData_tNbMqInfo);
				tNbMqInfo.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				Label lblMqExclus = new Label(grpMicroSat, SWT.NONE);
				lblMqExclus.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMqExclus.setText("Nombre de marqueurs exclu :");

				tNbMqExclus = new FormattedText(grpMicroSat, SWT.BORDER);
				GridData gridData_tNbMqExclus = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tNbMqExclus.widthHint = 50;
				tNbMqExclus.getControl().setLayoutData(gridData_tNbMqExclus);
				tNbMqExclus.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				Label lblMqNonInfo = new Label(grpMicroSat, SWT.NONE);
				lblMqNonInfo.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
				lblMqNonInfo.setText("Nombre de marqueurs non informatifs :");

				tNbMqNonInfo = new FormattedText(grpMicroSat, SWT.BORDER);
				GridData gridData_tNbMqNonInfo = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_tNbMqNonInfo.widthHint = 50;
				tNbMqNonInfo.getControl().setLayoutData(gridData_tNbMqNonInfo);
				tNbMqNonInfo.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));

				Group group1 = new Group(grpMicroSat, SWT.SHADOW_IN);
				group1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
				group1.setText("Sexe du foetus :");
				group1.setLayout(new RowLayout(SWT.VERTICAL));

				btnRadioSexeF = new Button(group1, SWT.RADIO);
				btnRadioSexeF.setText("F");
				btnRadioSexeM = new Button(group1, SWT.RADIO);
				btnRadioSexeM.setText("M");
				btnRadioSexeNA = new Button(group1, SWT.RADIO);
				btnRadioSexeNA.setText("non connu");
				btnRadioSexeNA.setSelection(true);
				btnRadioSexeNA.setToolTipText("Le sexe n'est pas préciser dans le dossier");
				btnRadioSexeNA.setSelection(true);

				Label lblContamination = new Label(grpMicroSat, SWT.NONE);
				lblContamination.setText("Contamination maternelle :");
				lblContamination.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));

				comboContamination = new Combo(grpMicroSat, SWT.READ_ONLY);
				comboContamination.setItems(ApplicationContexte.contamination);
				GridData gridData_comboContamination = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
				gridData_comboContamination.widthHint = 50;
				comboContamination.setLayoutData(gridData_comboContamination);
				comboContamination.addSelectionListener(new SelectionListener() {

					public void widgetDefaultSelected(SelectionEvent e) {

					}

					public void widgetSelected(SelectionEvent e) {
						if (btnRadioAnomal != null) {
							// Oui
							if (comboContamination.getText().equals(ApplicationContexte.contamination[0])) {
								btnRadioAnomal.setSelection(true);
							}
							// "Faible contamination"
							if (comboContamination.getText().equals(ApplicationContexte.contamination[1])) {
								btnRadioAnomal.setSelection(true);
							}
						}
						if (btnRadioNormal != null) {
							// "Pas de contamination"
							if (comboContamination.getText().equals(ApplicationContexte.contamination[2])) {
								btnRadioNormal.setSelection(false);
							}
						}
					}
				});

			}

			final List<Resultat> listResultat = ResultatServiceImpl.getInstance().findAllByidAnalyse(analyse.getIdAnalyse());
			if (grpRsultats == null) {
				// ***************************************les résultats

				grpRsultats = new Group(composite, SWT.NONE);
				grpRsultats.setText("R\u00E9sultats");
				grpRsultats.setLayout(new GridLayout(2, false));

				listViewer = new ListViewer(grpRsultats);
				listViewer.setContentProvider(ArrayContentProvider.getInstance());
				listViewer.setLabelProvider(new LabelProvider() {
					public Image getImage(Object element) {
						return null;
					}

					public String getText(Object element) {
						String typeAnalyse = ResultatServiceImpl.getInstance().getTypeAnalyseLibelleByidResultat(((Resultat) element).getIdResultat());
						String text = typeAnalyse + "-Résultat n°" + ((Resultat) element).getIdResultat();
						if (((Resultat) element).getDateRendu() != null) {
							SimpleDateFormat formatDateJava = new SimpleDateFormat("dd/MM/yyyy");
							text += " rendu le " + formatDateJava.format(((Resultat) element).getDateRendu());
						} else {
							text += " non rendu";
						}
						return text;
					}
				});
				if (DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "resultat")) {
					listViewer.addSelectionChangedListener(selectionChangedListeResultat);
				}
				if (DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "resultat")) {
					btnAjouterUnResultat = new Button(grpRsultats, SWT.NONE);
					btnAjouterUnResultat.setText("Ajouter un résultat");
					btnAjouterUnResultat.addSelectionListener(new SelectionAdapter() {
						public void widgetSelected(SelectionEvent e) {
							if (!((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).isModifiable()) {
								((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getItemModifier().notifyListeners(SWT.Selection, null);
							}
							if (((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).isModifiable()) {
								Analyse analyseCourante = getAnalyse();
								int idResultatExistant = 0;
								if (listResultat != null && listResultat.size() > 0) {

									String question = "Il existe déjà un ou plusieurs résultats : \n";
									for (Resultat resultat : listResultat) {
										question += "-" + resultat.getIdResultat() + "-" + resultat.getResultat() + "(le " + resultat.getDateRendu() + ")\n";
									}
									question += "Si vous souhaitez créer votre résultat à partir\n d'un autre, entrer le numéro,\n sinon tappez 0.";
									NbDialog idResultatExistantDialog = new NbDialog(Display.getCurrent().getActiveShell(), "Copier un résultat existant?", question);
									if (idResultatExistantDialog.open() == IDialogConstants.OK_ID) {
										for (Resultat resultat : listResultat) {
											if (idResultatExistantDialog.getNombre() == resultat.getIdResultat()) {
												idResultatExistant = idResultatExistantDialog.getNombre();
												break;
											}
										}
									}
								}
								resultat = new Resultat();
								resultat.setIdResultat(0);
								resultat.setAnalyse(analyseCourante);

								if (idResultatExistant != 0) {
									Resultat resultatACopier = ResultatServiceImpl.getInstance().getResultatById(idResultatExistant);
									resultat.setHerite(resultatACopier.getHerite());
									resultat.setChromosomes(resultatACopier.getChromosomes());
									resultat.setCommentaire(resultatACopier.getCommentaire());
									resultat.setFormule(resultatACopier.getFormule());
									resultat.setMozaique(resultatACopier.isMozaique());
									resultat.setResultat(resultatACopier.getResultat());
									resultat.setSignataire(resultatACopier.getSignataire());
									resultat.setTypeRendu(resultatACopier.getTypeRendu());
								} else {
									resultat.setHerite("Non vérifié");
									resultat.setResultat("Non rendu");
								}

								ResultatServiceImpl.getInstance().save(resultat);
								if (analyseCourante.getTypeAnalyse().getLibelle().equals("puce")) {
									renduPuce = new RenduPuce();
									renduPuce.setBuild("hg19");
									renduPuce.setIdRenduPuce(0);
									// if (listResultat != null &&
									// listResultat.size() > 0 &&
									// listResultat.get(0) != null) {
									// RenduPuce rpOld =
									// ResultatServiceImpl.getInstance().getRenduPuceByIdResultat(listResultat.get(0).getIdResultat());
									//
									// if (rpOld != null) {
									// renduPuce.setPuce(rpOld.getPuce());
									// renduPuce.setTypePlanExp(rpOld.getTypePlanExp());
									// }
									//
									// }
									List<Puce> puces = PuceServiceImpl.getInstance().findAllByidAnalyse(analyseCourante.getIdAnalyse());
									if (puces.size() > 0) {
										puce = puces.get(0);
										renduPuce.setPuce(puce);
									}
									renduPuce.setResultat(resultat);

									if (idResultatExistant != 0) {
										RenduPuce renduPuceExistant = ResultatServiceImpl.getInstance().getRenduPuceByIdResultat(idResultatExistant);
										renduPuce.setAnoter(renduPuceExistant.getAnoter());
										renduPuce.setPuce(renduPuceExistant.getPuce());
										renduPuce.setResolution(renduPuceExistant.getResolution());
										renduPuce.setResultat(renduPuceExistant.getResultat());
										renduPuce.setTypePlanExp(renduPuceExistant.getTypePlanExp());
									} else {
										if (renduPuce.getAnoter() == null || renduPuce.getAnoter().isEmpty()) {
											renduPuce.setAnoter("Présence de plusieurs variations génomiques interprétées comme polymorphismes selon les connaissances actuelles.");
										}
										if (renduPuce.getResolution() == null || renduPuce.getResolution().isEmpty()) {
											// affy
											if (puce.getTypePuce().getIdTypePuce() <= 6 || puce.getTypePuce().getIdTypePuce() == 9 || puce.getTypePuce().getIdTypePuce() == 12) {
												if (puce.getParametres() != null && !puce.getParametres().isEmpty()) {
													String[] tabParam = puce.getParametres().split("-");
													if (tabParam.length > 0) {
														renduPuce.setResolution(tabParam[1] + " kb. Seuls les remaniements contenant au moins " + tabParam[0] + " sondes consécutives déviées dans le même sens sur un intervalle minimum de " + tabParam[1] + "kb sont pris en compte.");
													}
												}
											}
											// 4x180
											if (puce.getTypePuce().getIdTypePuce() == 10) {
												renduPuce.setResolution("40 kb. Seuls les remaniements contenant au moins 3 sondes consécutives déviées dans le même sens sont pris en compte.");
											}
											// autres agilent
											if (puce.getTypePuce().getIdTypePuce() == 13 || puce.getTypePuce().getIdTypePuce() == 14) {
												String param = puce.getParametres();
												if (param != null) {
													String[] tabParam = param.split("moyenne : ");
													if (tabParam != null && tabParam.length > 1) {
														Prelevement prelevement = PrelevementServiceImpl.getInstance().getPrelevementById(AnalyseTabItem.this.analyse.getPrelevement().getIdPrelevement());
														// puce prénatale
														if (prelevement.getSecteur().getIdSecteur() == 3) {
															renduPuce.setResolution("400 kb. Seuls les remaniements contenant au moins 3 sondes consécutives déviées dans le même sens sont pris en compte.");
														} else {
															renduPuce.setResolution(tabParam[1] + " Seuls les remaniements contenant au moins 3 sondes consécutives déviées dans le même sens sont pris en compte.");
														}
													} else {
														renduPuce.setResolution("La résolution n'a pas été indiquée dans la puce, merci de vérifier");
													}
												} else {
													renduPuce.setResolution("La résolution n'a pas été indiquée dans la puce, merci de vérifier");
												}
											}
										}
									}
									ResultatServiceImpl.getInstance().save(renduPuce);

								}
								if (analyseCourante.getTypeAnalyse().getLibelle().equals("FISH vérification ACPA")) {
									RenduFish renduFishExistant = null;
									rf = new RenduFish();
									rf.setBuild("hg19");
									rf.setIdRenduFish(0);
									rf.setResultat(resultat);
									rf.setValide(0);

									if (idResultatExistant != 0) {
										renduFishExistant = ResultatServiceImpl.getInstance().getRenduFishByIdResultat(idResultatExistant);
										puce = renduFishExistant.getPuce();
									} else {
										List<Analyse> analysesPrel = AnalyseServiceImpl.getInstance().findAllByidPrelevement(analyseCourante.getPrelevement().getIdPrelevement());
										for (Analyse analysePrel : analysesPrel) {
											if (analysePrel.getTypeAnalyse().getIdTypeAnalyse() == 3) {
												List<Puce> puces = PuceServiceImpl.getInstance().findAllByidAnalyse(analysePrel.getIdAnalyse());
												for (Puce puceEnCours : puces) {
													puce = puceEnCours;
												}
											}
										}
									}

									rf.setPuce(puce);
									ResultatServiceImpl.getInstance().save(rf);

									if (idResultatExistant != 0) {

										List<VerifFish> vfExistants = ResultatServiceImpl.getInstance().getVerifFishByRenduFish(renduFishExistant.getIdRenduFish());
										for (VerifFish vfExistant : vfExistants) {
											VerifFish vf = new VerifFish(0, vfExistant.getAlteration());
											vf.setAnalyse(vfExistant.getAnalyse());
											vf.setDateVerif(vfExistant.getDateVerif());
											vf.setHerite(vfExistant.getHerite());
											vf.setDetecte(vfExistant.getDetecte());
											vf.setRenduFish(rf);
											ResultatServiceImpl.getInstance().save(vf);
											List<ExpFish> expFishExistants = ResultatServiceImpl.getInstance().getExpFishByVerif(vfExistant.getIdVerifFish());
											for (ExpFish expFishExistant : expFishExistants) {
												ExpFish ef = new ExpFish(vf);
												ef.setDetecte(expFishExistant.getDetecte());
												ef.setIdExpFish(0);
												ef.setLocalisation1(expFishExistant.getLocalisation1());
												ef.setLocalisation2(expFishExistant.getLocalisation2());
												ef.setNbMitose(expFishExistant.getNbMitose());
												ef.setNbNoyau(expFishExistant.getNbNoyau());
												ef.setNbPhoto(expFishExistant.getNbPhoto());
												ef.setNbSignaux1(expFishExistant.getNbSignaux1());
												ef.setNbSignaux2(expFishExistant.getNbSignaux2());
												ef.setSonde1(expFishExistant.getSonde1());
												ef.setSonde2(expFishExistant.getSonde2());
												ef.setVeriffish(vf);
												ef.setVersionSonde(expFishExistant.getVersionSonde());
												ResultatServiceImpl.getInstance().save(ef);
											}
										}

									} else {
										CNVVerifie cnvsVerif = new CNVVerifie(Display.getCurrent().getActiveShell(), "CNV vérifié par FISH", "CNV vérifié par FISH?", puce.getIdPuce());
										if (cnvsVerif.open() == IDialogConstants.OK_ID) {
											List<Alteration> cnvs = cnvsVerif.getCNV();
											for (Alteration cnv : cnvs) {
												VerifFish vf = new VerifFish(0, cnv);
												vf.setAnalyse(analyseCourante);
												vf.setRenduFish(rf);
												ResultatServiceImpl.getInstance().save(vf);
											}

										}
									}
								}

								if (analyseCourante.getTypeAnalyse().getLibelle().equals("qPCR vérification ACPA")) {
									RenduBiomol renduBiomolExistant = null;
									rbm = new RenduBiomol();
									rbm.setBuild("hg19");
									rbm.setIdRenduBioMol(0);
									rbm.setResultat(resultat);
									rbm.setValide(0);

									if (idResultatExistant != 0) {
										renduBiomolExistant = ResultatServiceImpl.getInstance().getRenduBioMolByIdResultat(idResultatExistant);
										puce = renduBiomolExistant.getPuce();
									} else {
										List<Analyse> analysesPrel = AnalyseServiceImpl.getInstance().findAllByidPrelevement(analyseCourante.getPrelevement().getIdPrelevement());
										for (Analyse analysePrel : analysesPrel) {
											if (analysePrel.getTypeAnalyse().getIdTypeAnalyse() == 3) {
												List<Puce> puces = PuceServiceImpl.getInstance().findAllByidAnalyse(analysePrel.getIdAnalyse());
												for (Puce puceEnCours : puces) {
													puce = puceEnCours;
												}
											}
										}
									}

									rbm.setPuce(puce);

									ResultatServiceImpl.getInstance().save(rbm);

									if (idResultatExistant != 0) {
										List<VerifBiomol> vbmExistants = ResultatServiceImpl.getInstance().getVerifBiomolByRenduBiomol(renduBiomolExistant.getIdRenduBioMol());
										for (VerifBiomol vbmExistant : vbmExistants) {
											VerifBiomol vbm = new VerifBiomol(0, vbmExistant.getAlteration());
											vbm.setAnalyse(vbmExistant.getAnalyse());
											vbm.setDateVerif(vbmExistant.getDateVerif());
											vbm.setHerite(vbmExistant.getHerite());
											vbm.setRenduBiomol(rbm);
											vbm.setDebut(vbmExistant.getDebut());
											vbm.setDetecte(vbmExistant.getDetecte());
											vbm.setFin(vbmExistant.getFin());
											vbm.setGeneInteret(vbmExistant.getGeneInteret());
											vbm.setGeneRef(vbmExistant.getGeneRef());
											vbm.setHerite(vbmExistant.getHerite());
											vbm.setTechnique(vbmExistant.getTechnique());
											vbm.setVersionGenome(vbmExistant.getVersionGenome());
											ResultatServiceImpl.getInstance().save(vbm);

											List<ZoneTesteeBiomol> zonesExistants = ResultatServiceImpl.getInstance().getZoneTesteeBiomolByVerif(vbmExistant.getIdVerifBioMol());
											for (ZoneTesteeBiomol zoneExistant : zonesExistants) {
												ZoneTesteeBiomol z = new ZoneTesteeBiomol();
												z.setDanshors(zoneExistant.isDanshors());
												z.setDebut(zoneExistant.getDebut());
												z.setDetecte(zoneExistant.getDetecte());
												z.setExon(zoneExistant.getExon());
												z.setFin(zoneExistant.getFin());
												z.setIdZoneTesteeBiomol(0);
												z.setVerifBiomol(vbm);
												z.setVersionGenome(zoneExistant.getVersionGenome());
												z.setLibelle(zoneExistant.getLibelle());
												ResultatServiceImpl.getInstance().save(z);
											}
										}

									} else {

										CNVVerifie cnvsVerif = new CNVVerifie(Display.getCurrent().getActiveShell(), "CNV vérifié par qPCR", "CNV vérifié par qPCR?", puce.getIdPuce());
										if (cnvsVerif.open() == IDialogConstants.OK_ID) {
											List<Alteration> cnvs = cnvsVerif.getCNV();
											for (Alteration cnv : cnvs) {
												VerifBiomol vf = new VerifBiomol(0, cnv);
												vf.setAnalyse(analyseCourante);
												vf.setRenduBiomol(rbm);
												ResultatServiceImpl.getInstance().save(vf);
											}

										}

									}

								}
								listResultat.add(resultat);
								listViewer.add(resultat);
								listViewer.setSelection(new StructuredSelection(resultat), true);
								if (comboSignataire == null || comboSignataire.getControl().isDisposed()) {

									createResultatContent();

								}
								selectResultat(resultat);
								remplirResultat(resultat);
							}
						}

					});
				}

				// if (listResultat != null && !listResultat.isEmpty()) {
				// createResultatContent();
				// listViewer.setSelection(new
				// StructuredSelection(listResultat.get(0)), true);
				// remplirResultat(listResultat.get(0));
				// }
			}
			if (listViewer != null) {
				listViewer.setInput(listResultat);
			}
			// **********************************************fin des résultats

		} else {
			analyseTabItem.setText("nouvelle analyse");

			if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PRENATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_POSTNATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_FOETO))) {
				tUFExec.setText("4076");
			}
			if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_PRENATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_POSTNATAL) || secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PUCE_FOETO))) {
				tUFExec.setText("4274");
			}
			if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_CELLULES))) {
				tUFExec.setText("4252");
			}
			if (secteur != null && (secteur.getLibelle().equals(ApplicationContexte.SECTEUR_BANQUE))) {
				tUFExec.setText("4273");
			}
		}

		// caryo
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
			Champ ctResolutionCaryo = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tResolutionCaryo", "Ana-" + analyse.getIdAnalyse());
			if (tResolutionCaryo != null && ctResolutionCaryo != null) {
				tResolutionCaryo.setText(ctResolutionCaryo.getValeur());
			}

			Champ cbtnMarquage = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("btnMarquage", "Ana-" + analyse.getIdAnalyse());

			if (cbtnMarquage != null) {
				String[] btns = cbtnMarquage.getValeur().split("\\|");
				for (int i = 0; i < btns.length; i++) {
					if (btns[i] != null && !btns[i].isEmpty() && btnMarquage != null && btnMarquage.containsKey(btns[i])) {
						btnMarquage.get(btns[i]).setSelection(true);
					}
				}
			}

			Champ ctMitosesClassees = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tMitosesClassees", "Ana-" + analyse.getIdAnalyse());
			if (tMitosesClassees != null && ctMitosesClassees != null) {
				tMitosesClassees.setValue(Integer.parseInt(ctMitosesClassees.getValeur()));
			}
			Champ ctMitosesExaminees = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tMitosesExaminees", "Ana-" + analyse.getIdAnalyse());
			if (tMitosesExaminees != null && ctMitosesExaminees != null) {
				tMitosesExaminees.setValue(Integer.parseInt(ctMitosesExaminees.getValeur()));
			}
			if (secteur != null && secteur.getLibelle().equals(ApplicationContexte.SECTEUR_PRENATAL)) {
				Champ ctColonies = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tColonies", "Ana-" + analyse.getIdAnalyse());
				if (tColonies != null && ctColonies != null) {
					tColonies.setValue(Integer.parseInt(ctColonies.getValeur()));
				}
				Champ ctChambresCultures = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tChambresCultures", "Ana-" + analyse.getIdAnalyse());
				if (tChambresCultures != null && ctChambresCultures != null) {
					tChambresCultures.setValue(Integer.parseInt(ctChambresCultures.getValeur()));
				}
				Champ ctNbApresED = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbApresED", "Ana-" + analyse.getIdAnalyse());
				if (tNbApresED != null && ctNbApresED != null) {
					tNbApresED.setValue(Integer.parseInt(ctNbApresED.getValeur()));
				}
				Champ ctNbApresCult = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbApresCult", "Ana-" + analyse.getIdAnalyse());
				if (tNbApresCult != null && ctNbApresCult != null) {
					tNbApresCult.setValue(Integer.parseInt(ctNbApresCult.getValeur()));
				}
			}

			Champ ccIndexMito = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("cIndexMito", "Ana-" + analyse.getIdAnalyse());
			if (cIndexMito != null && ccIndexMito != null) {
				cIndexMito.setText(ccIndexMito.getValeur());
			}
			Champ cclChr = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("clChr", "Ana-" + analyse.getIdAnalyse());
			if (clChr != null && cclChr != null) {
				clChr.setText(cclChr.getValeur());
			}
			Champ ccCytoplasme = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("cCytoplasme", "Ana-" + analyse.getIdAnalyse());
			if (cCytoplasme != null && ccCytoplasme != null) {
				cCytoplasme.setText(ccCytoplasme.getValeur());
			}
			Champ ccMitosesEclat = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("cMitosesEclat", "Ana-" + analyse.getIdAnalyse());
			if (cMitosesEclat != null && ccMitosesEclat != null) {
				cMitosesEclat.setText(ccMitosesEclat.getValeur());
			}
			Champ ccBandeR = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("cBandeR", "Ana-" + analyse.getIdAnalyse());
			if (cBandeR != null && ccBandeR != null) {
				cBandeR.setText(ccBandeR.getValeur());
			}
			Champ ccBandeG = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("cBandeG", "Ana-" + analyse.getIdAnalyse());
			if (cBandeG != null && ccBandeG != null) {
				cBandeG.setText(ccBandeG.getValeur());
			}
			Champ ctResolutionCaryoTech = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tResolutionCaryoTech", "Ana-" + analyse.getIdAnalyse());
			if (tResolutionCaryoTech != null && ctResolutionCaryoTech != null) {
				tResolutionCaryoTech.setText(ctResolutionCaryoTech.getValeur());
			}
			Champ ctFormuleTech = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tFormuleTech", "Ana-" + analyse.getIdAnalyse());
			if (tFormuleTech != null && ctFormuleTech != null) {
				tFormuleTech.setText(ctFormuleTech.getValeur());
			}
			Champ ctRemarqueTech = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tRemarqueTech", "Ana-" + analyse.getIdAnalyse());
			if (tRemarqueTech != null && ctRemarqueTech != null) {
				tRemarqueTech.setText(ctRemarqueTech.getValeur());
			}

			Champ cbtnPlusFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("btnPlusFish", "Ana-" + analyse.getIdAnalyse());
			if (btnPlusFish != null && cbtnPlusFish != null) {
				boolean isFish = Boolean.parseBoolean(cbtnPlusFish.getValeur());
				btnPlusFish.setSelection(isFish);
				if (isFish) {
					tSondeFish.addModifyListener(modifyListener);
					Champ ctSondeFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tSondeFish", "Ana-" + analyse.getIdAnalyse());
					if (tSondeFish != null && ctSondeFish != null) {
						tSondeFish.setText(ctSondeFish.getValeur());
					}
					tMotifFish.addModifyListener(modifyListener);
					Champ ctMotifFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tMotifFish", "Ana-" + analyse.getIdAnalyse());
					if (tMotifFish != null && ctMotifFish != null) {
						tMotifFish.setText(ctMotifFish.getValeur());
					}
					Champ ctNbMitoseFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbMitoseFish", "Ana-" + analyse.getIdAnalyse());
					if (tNbMitoseFish != null && ctNbMitoseFish != null) {
						tNbMitoseFish.setValue(Integer.parseInt(ctNbMitoseFish.getValeur()));
					}
					Champ ctNbNoyauxFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbNoyauxFish", "Ana-" + analyse.getIdAnalyse());
					if (tNbNoyauxFish != null && ctNbNoyauxFish != null) {
						tNbNoyauxFish.setValue(Integer.parseInt(ctNbNoyauxFish.getValeur()));
					}
				}
				if (btnPlusFish.getSelection()) {
					grpFISH.setVisible(true);
					((GridData) grpFISH.getLayoutData()).exclude = false;
					composite.pack();
				} else {
					grpFISH.setVisible(false);
					((GridData) grpFISH.getLayoutData()).exclude = true;
					composite.pack();
				}
			}

			Champ ccomboTypeFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTypeFish", "Ana-" + analyse.getIdAnalyse());
			if (comboTypeFish != null && ccomboTypeFish != null) {
				comboTypeFish.setText(ccomboTypeFish.getValeur());

			}
			if (comboTechMiseEnCult != null) {
				Champ ccomboTechMiseEnCult = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTechMiseEnCult", "Ana-" + analyse.getIdAnalyse());
				if (ccomboTechMiseEnCult != null) {
					Utilisateur u = UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(ccomboTechMiseEnCult.getValeur()));
					comboTechMiseEnCult.setSelection(new StructuredSelection(u), true);
				}
			}
			if (comboTechChoc != null) {
				Champ ccomboTechChoc = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTechChoc", "Ana-" + analyse.getIdAnalyse());
				if (ccomboTechChoc != null) {
					Utilisateur u = UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(ccomboTechChoc.getValeur()));
					comboTechChoc.setSelection(new StructuredSelection(u), true);
				}
			}
			if (comboTechEtalement != null) {
				Champ ccomboTechEtalement = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTechEtalement", "Ana-" + analyse.getIdAnalyse());
				if (ccomboTechEtalement != null) {
					Utilisateur u = UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(ccomboTechEtalement.getValeur()));
					comboTechEtalement.setSelection(new StructuredSelection(u), true);
				}
			}
			if (comboTechDenat != null) {
				Champ ccomboTechDenat = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTechDenat", "Ana-" + analyse.getIdAnalyse());
				if (ccomboTechDenat != null) {
					Utilisateur u = UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(ccomboTechDenat.getValeur()));
					comboTechDenat.setSelection(new StructuredSelection(u), true);
				}
			}
		}
		if (analyse.getTechnicienne() != null && comboTechnicienne != null) {
			comboTechnicienne.setSelection(new StructuredSelection(analyse.getTechnicienne()), true);
		}
		// FISH
		if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5)) {
			tSondeFish.addModifyListener(modifyListener);
			Champ ctSondeFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tSondeFish", "Ana-" + analyse.getIdAnalyse());
			if (tSondeFish != null && ctSondeFish != null) {
				tSondeFish.setText(ctSondeFish.getValeur());
			}
			tMotifFish.addModifyListener(modifyListener);
			Champ ctMotifFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tMotifFish", "Ana-" + analyse.getIdAnalyse());
			if (tMotifFish != null && ctMotifFish != null) {
				tMotifFish.setText(ctMotifFish.getValeur());
			}
			Champ ctNbMitoseFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbMitoseFish", "Ana-" + analyse.getIdAnalyse());
			if (tNbMitoseFish != null && ctNbMitoseFish != null) {
				tNbMitoseFish.setValue(Integer.parseInt(ctNbMitoseFish.getValeur()));
			}
			Champ ctNbNoyauxFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbNoyauxFish", "Ana-" + analyse.getIdAnalyse());
			if (tNbNoyauxFish != null && ctNbNoyauxFish != null) {
				tNbNoyauxFish.setValue(Integer.parseInt(ctNbNoyauxFish.getValeur()));
			}
			Champ ccomboTypeFish = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboTypeFish", "Ana-" + analyse.getIdAnalyse());
			if (comboTypeFish != null && ccomboTypeFish != null) {
				comboTypeFish.setText(ccomboTypeFish.getValeur());
			}
		}

		if (analyse != null && analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 6) {
			// microsat
			Champ ctNbMqInfo = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbMqInfo", "Ana-" + analyse.getIdAnalyse());
			if (ctNbMqInfo != null && tNbMqInfo != null) {
				tNbMqInfo.setValue(Integer.parseInt(ctNbMqInfo.getValeur()));
			}
			Champ ctNbMqNonInfo = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbMqNonInfo", "Ana-" + analyse.getIdAnalyse());
			if (ctNbMqNonInfo != null && tNbMqNonInfo != null) {
				tNbMqNonInfo.setValue(Integer.parseInt(ctNbMqNonInfo.getValeur()));
			}
			Champ ctNbMqExclus = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tNbMqExclus", "Ana-" + analyse.getIdAnalyse());
			if (ctNbMqExclus != null && tNbMqExclus != null) {
				tNbMqExclus.setValue(Integer.parseInt(ctNbMqExclus.getValeur()));
			}
			Champ cSexe = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("tSexeFoetus", "Prel-" + analyse.getPrelevement().getIdPrelevement());
			if (cSexe != null) {
				btnRadioSexeF.setSelection(cSexe.getValeur().equals("F"));
				btnRadioSexeM.setSelection(cSexe.getValeur().equals("M"));
				btnRadioSexeNA.setSelection(cSexe.getValeur().equals("NA"));
			} else {
				btnRadioSexeF.setSelection(false);
				btnRadioSexeM.setSelection(false);
				btnRadioSexeNA.setSelection(true);
			}
			Champ ccomboContamination = PrelevementServiceImpl.getInstance().getChampByTypeAndIdObjet("comboContamination", "Ana-" + analyse.getIdAnalyse());
			if (ccomboContamination != null && comboContamination != null) {
				comboContamination.setText(ccomboContamination.getValeur());
			}
		}
		addDirtyListener();
		setModifiable(isModifiable);
	}

	private void remplirResultat(Resultat newResultat) {
		resultat = newResultat;
		puce = null;
		if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 3) {
			List<Puce> puces = PuceServiceImpl.getInstance().findAllByidAnalyse(analyse.getIdAnalyse());
			if (puces.size() > 0) {
				puce = puces.get(0);
			}
		}

		// comboSignataire.setSelection(null);
		// dateRendu.setValue(null);
		// comboTypeRenduNb.setSelection(null);
		// comboTypeRenduStr.setSelection(null);
		if (tFormule != null) {
			tFormule.setText("");
		}
		if (tCommentaire != null) {
			tCommentaire.setText("");
		}
		if (btnRadioNonRendu != null) {
			btnRadioNonRendu.setSelection(true);
		}
		if (btnRadioEchec != null) {
			btnRadioEchec.setSelection(false);
		}
		if (btnRadioAnnule != null) {
			btnRadioAnnule.setSelection(false);
		}
		if (btnRadioNormal != null) {
			btnRadioNormal.setSelection(false);
		}
		if (btnRadioAnomal != null) {
			btnRadioAnomal.setSelection(false);
		}
		if (btnRadioEquilibre != null) {
			btnRadioEquilibre.setSelection(false);
		}
		if (btnRadioDesequilibre != null) {
			btnRadioDesequilibre.setSelection(false);
		}
		if (btnCheckMosaique != null) {
			btnCheckMosaique.setSelection(false);
		}
		if (btnRadioHMere != null) {
			btnRadioHMere.setSelection(false);
		}
		if (btnRadioHPere != null) {
			btnRadioHPere.setSelection(false);
		}
		if (btnRadioNHMere != null) {
			btnRadioNHMere.setSelection(false);
		}
		if (btnRadioNHPere != null) {
			btnRadioNHPere.setSelection(false);
		}
		if (btnRadioH2 != null) {
			btnRadioH2.setSelection(false);
		}
		if (btnRadioDeNovo != null) {
			btnRadioDeNovo.setSelection(false);
		}
		if (btnRadioNonVerif != null) {
			btnRadioNonVerif.setSelection(true);
		}
		for (int i = 0; i < btnCheckChromosome.length; i++) {

			if (btnCheckChromosome[i] != null) {
				btnCheckChromosome[i].setSelection(false);
			}
		}
		if (btnSigne != null) {
			btnSigne.setSelection(false);
		}
		if (btnRedige != null) {
			btnRedige.setSelection(false);
		}
		if (btnVerifie != null) {
			btnVerifie.setSelection(false);
		}
		if (dRedaction != null) {
			dRedaction.setValue(null);
		}
		if (dVerification != null) {
			dVerification.setValue(null);
		}
		if (DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "resultat") || resultat.getDateRendu() != null) {

			btnSigne.setSelection(resultat.isSigne());

			if (resultat.getSignataire() != null) {
				Utilisateur signat = UtilisateurServiceImpl.getInstance().getUtilisateurById(resultat.getSignataire().getIdUtilisateur());
				comboSignataire.setSelection(new StructuredSelection(signat), true);
			} else {
				comboSignataire.setSelection(null);
			}
			if (resultat.getDateRendu() != null) {
				dateRendu.setValue(resultat.getDateRendu());
				SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
				grpRsultatsss.setText("Résultat n° " + resultat.getIdResultat() + " rendu le " + formatter.format(resultat.getDateRendu()));

			} else {
				dateRendu.setValue(null);
				if (resultat.getIdResultat() == 0) {
					grpRsultatsss.setText("Nouveau Résultat");
				} else {
					grpRsultatsss.setText("Résultat n° " + resultat.getIdResultat() + " non rendu");
				}

			}
			btnRadioNonRendu.setSelection(resultat.getResultat().equals("Non rendu"));

			btnRadioEchec.setSelection(resultat.getResultat().equals("Echec"));

			btnRadioAnnule.setSelection(resultat.getResultat().equals("Annulé"));

			btnRadioNormal.setSelection(resultat.getResultat().equals("Normal"));

			btnRadioAnomal.setSelection(resultat.getResultat().equals("Anormal") || resultat.getResultat().equals("Anormal équilibré") || resultat.getResultat().equals("Anormal déséquilibré"));
			if (btnRadioAnomal.getSelection()) {
				createCompositeAnormal();
			}
			if (btnRadioEquilibre != null) {
				btnRadioEquilibre.setSelection(resultat.getResultat().equals("Anormal équilibré"));
			}
			if (btnRadioDesequilibre != null) {
				btnRadioDesequilibre.setSelection(resultat.getResultat().equals("Anormal déséquilibré"));
			}
			if (btnCheckMosaique != null) {
				btnCheckMosaique.setSelection(resultat.isMozaique());
			}
			if (btnRadioHMere != null) {
				btnRadioHMere.setSelection(resultat.getHerite().equals("Hérité de la mère"));
			}
			if (btnRadioHPere != null) {
				btnRadioHPere.setSelection(resultat.getHerite().equals("Hérité du père"));
			}
			if (btnRadioNHMere != null) {
				btnRadioNHMere.setSelection(resultat.getHerite().equals("Mère non porteuse"));
			}
			if (btnRadioNHPere != null) {
				btnRadioNHPere.setSelection(resultat.getHerite().equals("Père non porteur"));
			}
			if (btnRadioH2 != null) {
				btnRadioH2.setSelection(resultat.getHerite().equals("Hérité de l'un des 2"));
			}
			if (btnRadioDeNovo != null) {
				btnRadioDeNovo.setSelection(resultat.getHerite().equals("De novo"));
			}
			if (btnRadioNonVerif != null) {
				btnRadioNonVerif.setSelection(resultat.getHerite().equals("Non verifié") || resultat.getHerite().equals("NA"));
			}
			if (resultat.getTypeRendu() != null) {
				// de nombre
				if (resultat.getTypeRendu().getNbStr() == 1) {
					comboTypeRenduNb.setSelection(new StructuredSelection(resultat.getTypeRendu()), true);
				}
				// de structure
				if (resultat.getTypeRendu().getNbStr() == 2) {
					comboTypeRenduStr.setSelection(new StructuredSelection(resultat.getTypeRendu()), true);
				}
			} else {
				if (comboTypeRenduNb != null) {
					comboTypeRenduNb.setSelection(null);
				}
				if (comboTypeRenduStr != null) {
					comboTypeRenduStr.setSelection(null);
				}
			}
			if (resultat.getChromosomes() != null) {
				String[] listeChr = resultat.getChromosomes().split("\\|");
				for (int i = 0; i < listeChr.length; i++) {
					String chr = listeChr[i];
					for (int j = 0; j < btnCheckChromosome.length; j++) {
						if (btnCheckChromosome[j] != null) {
							if (btnCheckChromosome[j].getText().equals(chr)) {
								btnCheckChromosome[j].setSelection(true);
							} else {
								btnCheckChromosome[j].setSelection(false);
							}
						}
					}
				}

			} else {
				for (int j = 0; j < btnCheckChromosome.length; j++) {
					if (btnCheckChromosome[j] != null) {
						btnCheckChromosome[j].setSelection(false);
					}
				}
			}
			if (resultat.getFormule() != null && tFormule != null) {
				tFormule.setText(resultat.getFormule());
			} else {
				if (tFormule != null) {
					tFormule.setText("");
				}
			}
			if (resultat.getCommentaire() != null && tCommentaire != null) {
				tCommentaire.setText(resultat.getCommentaire());
			} else {

				if (tCommentaire != null) {
					tCommentaire.setText("");
				}
			}
			Analyse analyse = AnalyseServiceImpl.getInstance().getAnalyseByIdAnalyse(resultat.getAnalyse().getIdAnalyse());
			Prelevement prelevement = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
			Personne personne = PersonneServiceImpl.getInstance().getPersonneById(prelevement.getPersonne().getIdPersonne());

			String nomFichier = null;
			String nomFichier2 = null;

			if (analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getLibelle().equals("caryotype") || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
				nomFichier = prelevement.getNumeroPrelevement() + "_" + personne.getNom() + "_" + personne.getPrenom() + "_caryo" + analyse.getIdAnalyse() + "_resultat" + resultat.getIdResultat() + "_";
			} else if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getLibelle().equals("puce")) {
				nomFichier = prelevement.getNumeroPrelevement() + "_" + personne.getNom() + "_" + personne.getPrenom() + "_puce" + analyse.getIdAnalyse() + "_resultat" + resultat.getIdResultat() + "_";
				nomFichier2 = prelevement.getNumeroPrelevement() + "_" + personne.getNom() + "_" + personne.getPrenom() + "_cr" + analyse.getIdAnalyse() + "_resultat" + resultat.getIdResultat() + "_";
			} else if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getLibelle().contains("FISH")) {
				nomFichier = prelevement.getNumeroPrelevement() + "_" + personne.getNom() + "_" + personne.getPrenom() + "_fish" + analyse.getIdAnalyse() + "_resultat" + resultat.getIdResultat() + "_";
			} else if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getLibelle().contains("qPCR")) {
				nomFichier = prelevement.getNumeroPrelevement() + "_" + personne.getNom() + "_" + personne.getPrenom() + "_biomol" + analyse.getIdAnalyse() + "_resultat" + resultat.getIdResultat() + "_";
			}
			if (nomFichier != null) {
				String repResultat = "";
				if (Character.isDigit(prelevement.getNumeroPrelevement().charAt(1))) {
					repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prelevement.getNumeroPrelevement().substring(1, 3) + "\\" + prelevement.getNumeroPrelevement().substring(0, 1) + "\\";
				} else {
					if (Character.isDigit(prelevement.getNumeroPrelevement().charAt(2))) {
						repResultat = ApplicationContexte.REPERTOIRE_RESULTAT + "activité 20" + prelevement.getNumeroPrelevement().substring(2, 4) + "\\" + prelevement.getNumeroPrelevement().substring(0, 2) + "\\";
					}
				}

				File rep = new File(repResultat);
				File[] files = rep.listFiles();
				if (files != null) {
					for (int i = 0; i < files.length; i++) {

						if (files[i].isDirectory() != true && (files[i].getName().toLowerCase().contains(nomFichier.toLowerCase()) || (nomFichier2 != null && files[i].getName().toLowerCase().contains(nomFichier2.toLowerCase())))) {
							if (!liens.contains(files[i].getName())) {
								liens.add(files[i].getName());
								String message = "<a href=\"" + files[i].getName() + "\">" + files[i].getName() + "</a>";
								final Link lblLienDoc = new Link(grpRsultats, SWT.NONE);
								lblLienDoc.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
								lblLienDoc.setText(message);
								lblLienDoc.setToolTipText(files[i].getPath());
								lblLienDoc.getParent().pack();
								lblLienDoc.addSelectionListener(new SelectionListener() {

									@Override
									public void widgetDefaultSelected(SelectionEvent e) {
										// TODO Auto-generated method stub

									}

									@Override
									public void widgetSelected(SelectionEvent e) {
										try {
											File fichierResultat = new File(lblLienDoc.getToolTipText());
											if (resultat.isSigne()) {
												fichierResultat.setWritable(false);
											}
											Desktop desktop = Desktop.getDesktop();
											desktop.open(fichierResultat);
										} catch (IOException e1) {
											// TODO Auto-generated catch block
											e1.printStackTrace();
										}
									}
								});
							}
						}
					}
				}
			}

			// FISH
			if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 2) {
				groupeVerifFish = new HashMap<Integer, Group>();
				dRealisationFish = new HashMap<Integer, FormattedText>();
				btConfirmeFish = new HashMap<Integer, Button>();
				comboOrigineParentaleFish = new HashMap<Integer, Combo>();
				bAjouterSondeFish = new HashMap<Integer, Button>();
				groupeSondeFish = new HashMap<Integer, Group>();
				tSonde1ef = new HashMap<String, Text>();
				tlocSonde1ef = new HashMap<String, Text>();
				tNbSignauxSonde1ef = new HashMap<String, FormattedText>();
				tSonde2ef = new HashMap<String, Text>();
				tlocSonde2ef = new HashMap<String, Text>();
				tVersion2ef = new HashMap<String, Text>();
				tNbSignauxSonde2ef = new HashMap<String, FormattedText>();
				tnbPhotoef = new HashMap<String, FormattedText>();
				tnbNoyauxef = new HashMap<String, FormattedText>();
				tnbMitoseef = new HashMap<String, FormattedText>();
				bAnoConfirmeeef = new HashMap<String, Button>();

				Control[] cs = grpVerifFish.getChildren();
				for (Control control : cs) {
					control.dispose();
				}
				rf = ResultatServiceImpl.getInstance().getRenduFishByIdResultat(resultat.getIdResultat());
				// if (rf == null) {
				// if (btnAjouterVerifFish == null) {
				// btnAjouterVerifFish = new Button(grpVerifFish, SWT.BORDER);
				// btnAjouterVerifFish.setText("Si vérification sur apparenté sans puce, ajouter le CNV à vérifier");
				// btnAjouterVerifFish.setLayoutData(new GridData(SWT.CENTER,
				// SWT.CENTER, false, false, 2, 1));
				// btnAjouterVerifFish.addSelectionListener(new
				// SelectionAdapter() {
				// public void widgetSelected(SelectionEvent e) {
				// Puce p = new Puce();
				// p.setAnalyse(AnalyseTabItem.this.analyse);
				// p.setDateScan(new Date());
				// p.setParametres("Ceci est une puce fictive pour vérifier un CVN d'apparenté");
				// p.setPrincipale(false);
				// PuceServiceImpl.getInstance().save(p);
				// Alteration newCNV = new Alteration();
				// newCNV.setIdAlteration(0);
				// newCNV.setPuce(p);
				// newCNV.setManuel(true);
				// newCNV.setaVerifFish(true);
				// ((DossierEditor)
				// PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).addCNVTabItem(newCNV);
				// }
				//
				// });
				// }
				// }
				if (rf != null) {
					lvf = ResultatServiceImpl.getInstance().getVerifFishByRenduFish(rf.getIdRenduFish());

					for (final VerifFish vf : lvf) {
						if (!groupeVerifFish.containsKey(vf.getIdVerifFish())) {
							Group gVerif = new Group(grpVerifFish, SWT.NONE);
							GridData gd_groupeVerif = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							// // gd_grpChromosomesAtteints.widthHint = 687;
							gVerif.setLayoutData(gd_groupeVerif);
							gVerif.setText("CNV : " + "Chr" + vf.getAlteration().getChromosome() + ":" + vf.getAlteration().getDebutHg19() + ".." + vf.getAlteration().getFinHg19());
							gVerif.setLayout(new GridLayout(2, false));
							groupeVerifFish.put(vf.getIdVerifFish(), gVerif);
						}
						if (!dRealisationFish.containsKey(vf.getIdVerifFish())) {
							Label lblDateReal = new Label(groupeVerifFish.get(vf.getIdVerifFish()), SWT.NONE);
							lblDateReal.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblDateReal.setText("Date de réalisation :");
							FormattedText dateReal = new FormattedText(groupeVerifFish.get(vf.getIdVerifFish()), SWT.BORDER);
							GridData gridData_dateReal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_dateReal.widthHint = 75;
							dateReal.getControl().setLayoutData(gridData_dateReal);
							dateReal.setFormatter(new DateFormatter("dd/MM/yyyy"));
							dRealisationFish.put(vf.getIdVerifFish(), dateReal);
						}

						if (!bAjouterSondeFish.containsKey(vf.getIdVerifFish())) {
							Button bAjouterSonde = new Button(groupeVerifFish.get(vf.getIdVerifFish()), SWT.BORDER);
							bAjouterSonde.setText("Ajouter une sonde");
							bAjouterSonde.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
							bAjouterSonde.addSelectionListener(new SelectionAdapter() {
								public void widgetSelected(SelectionEvent e) {
									ExpFish newExpFish = new ExpFish();
									newExpFish.setDetecte(false);
									newExpFish.setIdExpFish(0);
									newExpFish.setVeriffish(vf);
									if (nbsonde.containsKey(vf.getIdVerifFish())) {
										nbsonde.put(vf.getIdVerifFish(), nbsonde.get(vf.getIdVerifFish()) + 1);
									} else {
										nbsonde.put(vf.getIdVerifFish(), 1);
									}
									createGroupeSonde(newExpFish, vf.getIdVerifFish());
								}

							});
							if (!groupeSondeFish.containsKey(vf.getIdVerifFish())) {
								Group gSonde = new Group(groupeVerifFish.get(vf.getIdVerifFish()), SWT.NONE);
								GridData gd_groupeVerif = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
								// // gd_grpChromosomesAtteints.widthHint = 687;
								gSonde.setLayoutData(gd_groupeVerif);
								gSonde.setText("Sondes testées");
								gSonde.setLayout(new GridLayout(2, false));
								gSonde.pack();
								groupeSondeFish.put(vf.getIdVerifFish(), gSonde);
							}
							bAjouterSondeFish.put(vf.getIdVerifFish(), bAjouterSonde);
						}

						if (!btConfirmeFish.containsKey(vf.getIdVerifFish())) {
							Button btConfirme = new Button(groupeVerifFish.get(vf.getIdVerifFish()), SWT.CHECK);
							btConfirme.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
							btConfirme.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							if (vf.getAlteration().getNbCopie() >= 2) {
								btConfirme.setText("Duplication confirmée par FISH");
							}
							if (vf.getAlteration().getNbCopie() < 2) {
								btConfirme.setText("Délétion confirmée par FISH ");
							}
							btConfirmeFish.put(vf.getIdVerifFish(), btConfirme);
						}

						if (!comboOrigineParentaleFish.containsKey(vf.getIdVerifFish())) {

							Label lblOrigineParentale = new Label(groupeVerifFish.get(vf.getIdVerifFish()), SWT.NONE);
							lblOrigineParentale.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblOrigineParentale.setText("Origine parentale :");

							Combo comboOrigineParentale = new Combo(groupeVerifFish.get(vf.getIdVerifFish()), SWT.SINGLE | SWT.READ_ONLY);
							GridData gridData_tUFPrescr = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_tUFPrescr.widthHint = 150;
							comboOrigineParentale.setLayoutData(gridData_tUFPrescr);
							comboOrigineParentale.setItems(new String[] { "Origine parentale non vérifiée", "De novo", "Héritée de la mère", "Héritée du père", "Les 2 parents sont porteurs", "Père non porteur", "Mère non porteuse", "Parents testés", "Parents testés" });

							comboOrigineParentaleFish.put(vf.getIdVerifFish(), comboOrigineParentale);
						}

						// remplissage
						if (vf.getDateVerif() != null) {
							dRealisationFish.get(vf.getIdVerifFish()).setValue(vf.getDateVerif());
							if (dateTechnique.getValue() == null) {
								dateTechnique.setValue(vf.getDateVerif());
							}
						}
						if (vf.getDetecte() != null) {
							btConfirmeFish.get(vf.getIdVerifFish()).setSelection(vf.getDetecte());
							btnRadioAnomal.setSelection(true);
							if (btnRadioAnomal.getSelection()) {
								createCompositeAnormal();
							}

						}
						if (vf.getHerite() != null) {
							comboOrigineParentaleFish.get(vf.getIdVerifFish()).setText(vf.getHerite());
						}

						groupeVerifFish.get(vf.getIdVerifFish()).pack();

						List<ExpFish> experFishs = ResultatServiceImpl.getInstance().getExpFishByVerif(vf.getIdVerifFish());
						if (nbsonde.containsKey(vf.getIdVerifFish())) {
							nbsonde.put(vf.getIdVerifFish(), Math.max(nbsonde.get(vf.getIdVerifFish()), experFishs.size()));
						} else {
							nbsonde.put(vf.getIdVerifFish(), experFishs.size());
						}

						for (ExpFish expFish : experFishs) {
							createGroupeSonde(expFish, vf.getIdVerifFish());
						}
					}
					if (btnRedige == null && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction")) {
						btnRedige = new Button(grpRsultatsss, SWT.CHECK);
						btnRedige.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
						btnRedige.setBounds(0, 0, 55, 15);
						btnRedige.setText("Résultat rédigé le");
						btnRedige.addSelectionListener(new SelectionListener() {

							@Override
							public void widgetDefaultSelected(SelectionEvent e) {
								// TODO Auto-generated method stub

							}

							@Override
							public void widgetSelected(SelectionEvent e) {
								if (btnRedige.getSelection()) {
									dRedaction.setValue(new Date());
								}
							}
						});

						dRedaction = new FormattedText(grpRsultatsss, SWT.BORDER);
						dRedaction.getControl().setEditable(false);
						GridData gd_dRedaction = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
						gd_dRedaction.widthHint = 75;
						dRedaction.getControl().setLayoutData(gd_dRedaction);
						dRedaction.setFormatter(new DateFormatter("dd/MM/yyyy"));
					} else {
						if (btnRedige != null) {
							btnRedige.setSelection(false);
							dRedaction.getControl().setText("");
						}
					}
					btnRedige.setSelection(false);
					dRedaction.getControl().setText("");
					if (rf.getDateRedaction() != null) {
						dRedaction.setValue(rf.getDateRedaction());
						btnRedige.setSelection(true);
					} else {
						btnRedige.setSelection(false);
						dRedaction.getControl().setText("");
					}
					if (!btnRedige.getSelection() && resultat.getDateRendu() != null) {
						btnRedige.setSelection(true);
					}
				}

			}

			// qPCR
			if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 4) {
				groupeVerifBM = new HashMap<Integer, Group>();
				dRealisationBM = new HashMap<Integer, FormattedText>();
				tTechniqueBM = new HashMap<Integer, Text>();
				groupePosqPCRDans = new HashMap<Integer, Group>();
				groupePosqPCRHors = new HashMap<Integer, Group>();
				tGeneRefqPCR = new HashMap<Integer, Text>();
				comboConfirmeBM = new HashMap<Integer, Combo>();
				comboOrigineParentaleBM = new HashMap<Integer, Combo>();
				tGeneAVerifBM = new HashMap<Integer, Text>();
				tDebutAVqPCR = new HashMap<Integer, FormattedText>();
				tFinAVqPCR = new HashMap<Integer, FormattedText>();
				tNomPosztb = new HashMap<String, Text>();
				tExonPosztb = new HashMap<String, Text>();
				tDebutztb = new HashMap<String, FormattedText>();
				tFinztb = new HashMap<String, FormattedText>();
				tTailleztb = new HashMap<String, FormattedText>();
				comboAnoConfirmeeztb = new HashMap<String, Combo>();
				bAjouterZoneHorsBM = new HashMap<Integer, Button>();
				bAjouterZoneDansBM = new HashMap<Integer, Button>();

				nbzone = new HashMap<Integer, Integer>();
				ztbms = new HashMap<String, ZoneTesteeBiomol>();
				tNomPosztb = new HashMap<String, Text>();
				tExonPosztb = new HashMap<String, Text>();
				tDebutztb = new HashMap<String, FormattedText>();
				tFinztb = new HashMap<String, FormattedText>();
				tTailleztb = new HashMap<String, FormattedText>();
				comboAnoConfirmeeztb = new HashMap<String, Combo>();

				Control[] cs = grpVerifqPCR.getChildren();
				for (Control control : cs) {
					control.dispose();
				}

				rbm = ResultatServiceImpl.getInstance().getRenduBioMolByIdResultat(resultat.getIdResultat());
				// if (rbm == null) {
				// if (btnAjouterVerifBM == null) {
				// btnAjouterVerifBM = new Button(grpVerifqPCR, SWT.BORDER);
				// btnAjouterVerifBM.setText("Si vérification sur apparenté sans puce, ajouter le CNV à vérifier");
				// btnAjouterVerifBM.setLayoutData(new GridData(SWT.CENTER,
				// SWT.CENTER, false, false, 2, 1));
				// btnAjouterVerifBM.addSelectionListener(new SelectionAdapter()
				// {
				// public void widgetSelected(SelectionEvent e) {
				// Puce p = new Puce();
				// p.setAnalyse(AnalyseTabItem.this.analyse);
				// p.setDateScan(new Date());
				// p.setParametres("Ceci est une puce fictive pour vérifier un CVN d'apparenté");
				// p.setPrincipale(false);
				// PuceServiceImpl.getInstance().save(p);
				// Alteration newCNV = new Alteration();
				// newCNV.setIdAlteration(0);
				// newCNV.setPuce(p);
				// newCNV.setManuel(true);
				// newCNV.setaVerifBioMol(true);
				// ((DossierEditor)
				// PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).addCNVTabItem(newCNV);
				// }
				//
				// });
				// }
				// }
				if (rbm != null) {
					lvbm = ResultatServiceImpl.getInstance().getVerifBiomolByRenduBiomol(rbm.getIdRenduBioMol());
					for (final VerifBiomol vbm : lvbm) {
						if (!groupeVerifBM.containsKey(vbm.getIdVerifBioMol())) {
							Group gVerif = new Group(grpVerifqPCR, SWT.NONE);
							GridData gd_groupeVerif = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							// // gd_grpChromosomesAtteints.widthHint = 687;
							gVerif.setLayoutData(gd_groupeVerif);
							gVerif.setText("Indication : " + "Chr" + vbm.getAlteration().getChromosome() + ":" + vbm.getAlteration().getDebutHg19() + ".." + vbm.getAlteration().getFinHg19() + "x" + vbm.getAlteration().getNbCopie());
							gVerif.setLayout(new GridLayout(2, false));
							groupeVerifBM.put(vbm.getIdVerifBioMol(), gVerif);
						}

						if (!tGeneAVerifBM.containsKey(vbm.getIdVerifBioMol())) {

							Label lbl = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lbl.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lbl.setText("Région Chromosomique à étudier :");
							lbl.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
							lbl.setForeground(new Color(Display.getCurrent(), 6, 71, 155));

							Label lblGeneAVerif = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblGeneAVerif.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblGeneAVerif.setText("Gènes à vérifier :");

							Text tGeneAV = new Text(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
							GridData gridData_tGeneAV = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
							gridData_tGeneAV.widthHint = 300;
							gridData_tGeneAV.heightHint = 100;
							tGeneAV.setLayoutData(gridData_tGeneAV);
							if (vbm.getAlteration().getPrecisionVerif() != null) {
								tGeneAV.setText(vbm.getAlteration().getPrecisionVerif());
							}
							tGeneAVerifBM.put(vbm.getIdVerifBioMol(), tGeneAV);
						}

						if (!tDebutAVqPCR.containsKey(vbm.getIdVerifBioMol())) {
							Label lbldebAVerif = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lbldebAVerif.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lbldebAVerif.setText("Position génomique de sur le chromosome " + vbm.getAlteration().getChromosome() + " de :");
							FormattedText tDebutqPCR = new FormattedText(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							tDebutqPCR.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
							GridData gridData_tDebutqPCR = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
							gridData_tDebutqPCR.widthHint = 150;
							tDebutqPCR.getControl().setLayoutData(gridData_tDebutqPCR);
							tDebutAVqPCR.put(vbm.getIdVerifBioMol(), tDebutqPCR);
						}
						if (!tFinAVqPCR.containsKey(vbm.getIdVerifBioMol())) {
							Label lblfinAVerif = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblfinAVerif.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblfinAVerif.setText(" à :");
							lblfinAVerif.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));

							FormattedText tFinqPCR = new FormattedText(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							tFinqPCR.setFormatter(new NumberFormatter(ApplicationContexte.nfEntier, Locale.FRENCH));
							GridData gridData_tFinqPCR = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
							gridData_tFinqPCR.widthHint = 150;
							tFinqPCR.getControl().setLayoutData(gridData_tFinqPCR);
							tFinAVqPCR.put(vbm.getIdVerifBioMol(), tFinqPCR);
						}
						if (!dRealisationBM.containsKey(vbm.getIdVerifBioMol())) {
							Label lbl = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lbl.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lbl.setText("PCR quantitative :");
							lbl.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
							lbl.setForeground(new Color(Display.getCurrent(), 6, 71, 155));

							Label lblDateReal = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblDateReal.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblDateReal.setText("Date de réalisation :");
							FormattedText dateReal = new FormattedText(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							GridData gridData_dateReal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_dateReal.widthHint = 75;
							dateReal.getControl().setLayoutData(gridData_dateReal);
							dateReal.setFormatter(new DateFormatter("dd/MM/yyyy"));
							dRealisationBM.put(vbm.getIdVerifBioMol(), dateReal);
						}
						if (!tTechniqueBM.containsKey(vbm.getIdVerifBioMol())) {
							Label lblTechniqueBM = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblTechniqueBM.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblTechniqueBM.setText("Technique utilisée :");
							Text tTechBM = new Text(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							GridData gridData_dateReal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_dateReal.widthHint = 300;
							tTechBM.setLayoutData(gridData_dateReal);
							tTechBM.setText("qPCR SYBR Green LightCycler 480 (Roche)");
							tTechniqueBM.put(vbm.getIdVerifBioMol(), tTechBM);
						}

						if (!bAjouterZoneDansBM.containsKey(vbm.getIdVerifBioMol())) {
							Button bAjouterSonde = new Button(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							bAjouterSonde.setText("+");
							bAjouterSonde.setToolTipText("Ajouter une position génomique des amorces dans la zone identifiée par puce");
							bAjouterSonde.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
							bAjouterSonde.addSelectionListener(new SelectionAdapter() {
								public void widgetSelected(SelectionEvent e) {
									ZoneTesteeBiomol ztb = new ZoneTesteeBiomol();
									ztb.setDetecte(0);
									ztb.setIdZoneTesteeBiomol(0);
									ztb.setVerifBiomol(vbm);
									ztb.setDanshors(true);
									ztb.setVersionGenome("hg19");
									if (nbzone.containsKey(vbm.getIdVerifBioMol())) {
										nbzone.put(vbm.getIdVerifBioMol(), nbzone.get(vbm.getIdVerifBioMol()) + 1);
									} else {
										nbzone.put(vbm.getIdVerifBioMol(), 1);
									}
									createGroupeZoneBM(ztb, vbm.getIdVerifBioMol());
								}

							});
							if (!groupePosqPCRDans.containsKey(vbm.getIdVerifBioMol())) {
								Group gSonde = new Group(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
								GridData gd_groupeVerif = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
								// // gd_grpChromosomesAtteints.widthHint = 687;
								gSonde.setLayoutData(gd_groupeVerif);
								gSonde.setText("Position génomique des amorces dans la zone identifiée par puce : ");
								gSonde.setLayout(new GridLayout(2, false));
								gSonde.pack();
								groupePosqPCRDans.put(vbm.getIdVerifBioMol(), gSonde);
							}
							bAjouterZoneDansBM.put(vbm.getIdVerifBioMol(), bAjouterSonde);
						}

						if (!bAjouterZoneHorsBM.containsKey(vbm.getIdVerifBioMol())) {
							Button bAjouterSonde = new Button(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							bAjouterSonde.setText("+");
							bAjouterSonde.setToolTipText("Ajouter une position génomique des amorces en dehors la zone identifiée par puce");
							bAjouterSonde.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1));
							bAjouterSonde.addSelectionListener(new SelectionAdapter() {
								public void widgetSelected(SelectionEvent e) {
									ZoneTesteeBiomol ztb = new ZoneTesteeBiomol();
									ztb.setDetecte(0);
									ztb.setIdZoneTesteeBiomol(0);
									ztb.setVerifBiomol(vbm);
									ztb.setDanshors(false);
									ztb.setVersionGenome("hg19");
									if (nbzone.containsKey(vbm.getIdVerifBioMol())) {
										nbzone.put(vbm.getIdVerifBioMol(), nbzone.get(vbm.getIdVerifBioMol()) + 1);
									} else {
										nbzone.put(vbm.getIdVerifBioMol(), 1);
									}
									createGroupeZoneBM(ztb, vbm.getIdVerifBioMol());
								}

							});
							if (!groupePosqPCRHors.containsKey(vbm.getIdVerifBioMol())) {
								Group gSonde = new Group(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
								GridData gd_groupeVerif = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
								// // gd_grpChromosomesAtteints.widthHint = 687;
								gSonde.setLayoutData(gd_groupeVerif);
								gSonde.setText("Position génomique des amorces en dehors la zone identifiée par puce : ");
								gSonde.setLayout(new GridLayout(2, false));
								gSonde.pack();
								groupePosqPCRHors.put(vbm.getIdVerifBioMol(), gSonde);
							}
							bAjouterZoneHorsBM.put(vbm.getIdVerifBioMol(), bAjouterSonde);
						}

						if (!tGeneRefqPCR.containsKey(vbm.getIdVerifBioMol())) {
							Label lblGeneRef = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblGeneRef.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblGeneRef.setText("Gènes de référence utilisés :");
							Text tGeneRef = new Text(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.BORDER);
							GridData gridData_dateReal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_dateReal.widthHint = 300;
							tGeneRef.setLayoutData(gridData_dateReal);
							tGeneRef.setText("B2M: 15q21-q22.2 - DMD: Xp21.2 - MVK: 12q24.11");
							tGeneRefqPCR.put(vbm.getIdVerifBioMol(), tGeneRef);
						}
						if (!comboConfirmeBM.containsKey(vbm.getIdVerifBioMol())) {
							Label lblconf = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblconf.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							if (vbm.getAlteration().getNbCopie() >= 2) {
								lblconf.setText("Duplication ");
							}
							if (vbm.getAlteration().getNbCopie() < 2) {
								lblconf.setText("Délétion ");
							}

							Combo btConfirme = new Combo(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.SINGLE | SWT.READ_ONLY);
							GridData gridData_btConfirme = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_btConfirme.widthHint = 150;
							btConfirme.setLayoutData(gridData_btConfirme);
							btConfirme.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							btConfirme.setItems(detectes);

							comboConfirmeBM.put(vbm.getIdVerifBioMol(), btConfirme);
						}

						if (!comboOrigineParentaleBM.containsKey(vbm.getIdVerifBioMol())) {

							Label lblOrigineParentale = new Label(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.NONE);
							lblOrigineParentale.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
							lblOrigineParentale.setText("Origine parentale :");

							Combo comboOrigineParentale = new Combo(groupeVerifBM.get(vbm.getIdVerifBioMol()), SWT.SINGLE | SWT.READ_ONLY);
							GridData gridData_tUFPrescr = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gridData_tUFPrescr.widthHint = 150;
							comboOrigineParentale.setLayoutData(gridData_tUFPrescr);
							comboOrigineParentale.setItems(new String[] { "Origine parentale non vérifiée", "De novo", "Héritée de la mère", "Héritée du père", "Les 2 parents sont porteurs", "Père non porteur", "Mère non porteuse", "Parents testés" });

							comboOrigineParentaleBM.put(vbm.getIdVerifBioMol(), comboOrigineParentale);
						}

						// remplissage
						if (vbm.getGeneInteret() != null) {
							tGeneAVerifBM.get(vbm.getIdVerifBioMol()).setText(vbm.getGeneInteret());
						}
						if (vbm.getDebut() != null) {
							tDebutAVqPCR.get(vbm.getIdVerifBioMol()).setValue(vbm.getDebut());
						}
						if (vbm.getFin() != null) {
							tFinAVqPCR.get(vbm.getIdVerifBioMol()).setValue(vbm.getFin());
						}
						if (vbm.getDateVerif() != null) {
							dRealisationBM.get(vbm.getIdVerifBioMol()).setValue(vbm.getDateVerif());
						}
						if (vbm.getTechnique() != null) {
							tTechniqueBM.get(vbm.getIdVerifBioMol()).setText(vbm.getTechnique());
						}
						if (vbm.getGeneRef() != null) {
							tGeneRefqPCR.get(vbm.getIdVerifBioMol()).setText(vbm.getGeneRef());
						}
						if (vbm.getDetecte() != null && vbm.getDetecte() > 0) {
							comboConfirmeBM.get(vbm.getIdVerifBioMol()).setText(detectes[vbm.getDetecte()]);
						}
						if (vbm.getHerite() != null) {
							comboOrigineParentaleBM.get(vbm.getIdVerifBioMol()).setText(vbm.getHerite());
						}

						List<ZoneTesteeBiomol> zonestbms = ResultatServiceImpl.getInstance().getZoneTesteeBiomolByVerif(vbm.getIdVerifBioMol());
						int i = 1;
						for (ZoneTesteeBiomol ztbm : zonestbms) {
							nbzone.put(vbm.getIdVerifBioMol(), i);
							createGroupeZoneBM(ztbm, vbm.getIdVerifBioMol());
							i++;
						}
						if (btnRedige == null && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction")) {
							btnRedige = new Button(grpRsultatsss, SWT.CHECK);
							btnRedige.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
							btnRedige.setBounds(0, 0, 55, 15);
							btnRedige.setText("Résultat rédigé le");
							btnRedige.addSelectionListener(new SelectionListener() {

								@Override
								public void widgetDefaultSelected(SelectionEvent e) {
									// TODO Auto-generated method stub

								}

								@Override
								public void widgetSelected(SelectionEvent e) {
									if (btnRedige.getSelection()) {
										dRedaction.setValue(new Date());
									}
								}
							});

							dRedaction = new FormattedText(grpRsultatsss, SWT.BORDER);
							dRedaction.getControl().setEditable(false);
							GridData gd_dRedaction = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
							gd_dRedaction.widthHint = 75;
							dRedaction.getControl().setLayoutData(gd_dRedaction);
							dRedaction.setFormatter(new DateFormatter("dd/MM/yyyy"));
						}
						btnVerifie.setSelection(false);
						dVerification.getControl().setText("");
						if (rbm.getDateRedaction() != null) {
							dRedaction.setValue(rbm.getDateRedaction());
							btnRedige.setSelection(true);
						} else {
							btnRedige.setSelection(false);
						}
						if (rbm.getDateVerification() != null) {
							dVerification.setValue(rbm.getDateVerification());
							btnVerifie.setSelection(true);

						} else {
							btnVerifie.setSelection(false);
							dVerification.getControl().setText("");
						}
						if (rbm.getVerificateur() != null) {
							comboVerificateur.setSelection(new StructuredSelection(rbm.getVerificateur()));
						}
						groupeVerifBM.get(vbm.getIdVerifBioMol()).pack();
						groupeVerifBM.get(vbm.getIdVerifBioMol()).setVisible(true);
					}

				}
				grpVerifqPCR.pack();
				grpVerifqPCR.setVisible(true);
			}

			// puce
			if (analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 3) {
				ArrayList<TypePlanExp> listTypePlanExp = ReferentielServiceImpl.getInstance().getTypePlanExp();
				comboTypePlanExp.setInput(listTypePlanExp);
				renduPuce = ResultatServiceImpl.getInstance().getRenduPuceByIdResultat(resultat.getIdResultat());
				if (renduPuce == null) {
					renduPuce = new RenduPuce();
					renduPuce.setResultat(newResultat);
					renduPuce.setBuild("hg19");
					renduPuce.setPuce(puce);
				}
				if (renduPuce.getAnoter() == null || renduPuce.getAnoter().isEmpty()) {
					renduPuce.setAnoter("Présence de plusieurs variations génomiques interprétées comme polymorphismes selon les connaissances actuelles.");
				}
				tANoter.setText(renduPuce.getAnoter());
				if (renduPuce.getResolution() == null || renduPuce.getResolution().isEmpty()) {
					// affy
					if (puce.getTypePuce().getIdTypePuce() <= 6 || puce.getTypePuce().getIdTypePuce() == 9 || puce.getTypePuce().getIdTypePuce() == 12) {
						if (puce.getParametres() != null && !puce.getParametres().isEmpty()) {
							String[] tabParam = puce.getParametres().split("-");
							if (tabParam.length > 0) {
								renduPuce.setResolution(tabParam[1] + " kb. Seuls les remaniements contenant au moins " + tabParam[0] + " sondes consécutives déviées dans le même sens sur un intervalle minimum de " + tabParam[1] + "kb sont pris en compte.");
							}
						}
					}
					// 4x180
					if (puce.getTypePuce().getIdTypePuce() == 10) {
						renduPuce.setResolution("40 kb. Seuls les remaniements contenant au moins 3 sondes consécutives déviées dans le même sens sont pris en compte.");
					}
					// autres agilent
					if (puce.getTypePuce().getIdTypePuce() == 13 || puce.getTypePuce().getIdTypePuce() == 14) {
						String param = puce.getParametres();
						if (param != null) {
							String[] tabParam = param.split("moyenne :");
							if (tabParam != null && tabParam.length > 1) {
								String chaine = "";
								if (tabParam[1].contains("null")) {
									int idxl = tabParam[1].lastIndexOf("l");
									chaine = tabParam[1].substring(idxl).trim();
								} else {
									chaine = tabParam[1].trim();
								}
								renduPuce.setResolution(chaine + " Seuls les remaniements contenant au moins 3 sondes consécutives déviées dans le même sens sont pris en compte.");
							} else {
								renduPuce.setResolution("La résolution n'a pas été indiquée dans la puce, merci de vérifier");
							}
						} else {
							renduPuce.setResolution("La résolution n'a pas été indiquée dans la puce, merci de vérifier");
						}
					}
				}
				if (renduPuce.getResolution() != null) {
					tResolution.setText(renduPuce.getResolution());
				}
				if (renduPuce.getTypePlanExp() == null) {
					if (puce.getTypePuce().getMarquePuce().getLibelle().contains("Affy")) {
						comboTypePlanExp.getCombo().setText("Patient contre témoin informatique");
					} else if (puce.getTypePuce().getMarquePuce().getLibelle().contains("Agi")) {
						comboTypePlanExp.getCombo().setText("Patient contre témoin");
					}
				} else {
					comboTypePlanExp.getCombo().setText(renduPuce.getTypePlanExp().getLibelle());
				}
				if (btnRedige == null && DroitServiceImpl.getInstance().peutLireByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction")) {
					btnRedige = new Button(grpRsultatsss, SWT.CHECK);
					btnRedige.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
					btnRedige.setBounds(0, 0, 55, 15);
					btnRedige.setText("Résultat rédigé le");
					btnRedige.addSelectionListener(new SelectionListener() {

						@Override
						public void widgetDefaultSelected(SelectionEvent e) {
							// TODO Auto-generated method stub

						}

						@Override
						public void widgetSelected(SelectionEvent e) {
							if (btnRedige.getSelection()) {
								dRedaction.setValue(new Date());
							}
						}
					});

					dRedaction = new FormattedText(grpRsultatsss, SWT.BORDER);
					dRedaction.getControl().setEditable(false);
					GridData gd_dRedaction = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
					gd_dRedaction.widthHint = 75;
					dRedaction.getControl().setLayoutData(gd_dRedaction);
					dRedaction.setFormatter(new DateFormatter("dd/MM/yyyy"));
				}
				btnRedige.setSelection(false);
				dRedaction.getControl().setText("");
				if (renduPuce.getDateRedaction() != null) {
					dRedaction.setValue(renduPuce.getDateRedaction());
					btnRedige.setSelection(true);
				} else {
					btnRedige.setSelection(false);
					dRedaction.getControl().setText("");
				}
			}
		}
		compositeAnormal.setVisible(btnRadioAnomal.getSelection());
		((GridData) compositeAnormal.getLayoutData()).exclude = !btnRadioAnomal.getSelection();
		setModifiable(isModifiable);
	}

	public void selectResultat(Resultat resultat2) {
		if (!((DossierEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).isDirty()) {
			if (listViewer != null) {
				resultat = resultat2;
				listViewer.setSelection(new StructuredSelection(resultat));

			}
		}
	}

	public void setModifiable(boolean isModifiable) {
		removeDirtyListener();
		this.isModifiable = isModifiable;
		if (!isModifiable) {
			btnDossierUrgent.setEnabled(false);
			tUrgent.setEnabled(false);
			comboTypeAnalyse.getCombo().setEnabled(false);

			if (comboTechnicienne != null) {
				comboTechnicienne.getCombo().setEnabled(false);
			}

			if (dateTechnique != null) {
				dateTechnique.getControl().setEnabled(false);
			}
			tUFExec.setEnabled(false);
			if (dateRendu != null) {
				dateRendu.getControl().setEnabled(false);
				if (comboTypeRenduNb != null) {
					comboTypeRenduNb.getCombo().setEnabled(false);
				}
				if (comboTypeRenduNb != null) {
					comboTypeRenduStr.getCombo().setEnabled(false);
				}
				if (comboSignataire != null) {
					comboSignataire.getCombo().setEnabled(false);
				}
				if (btnCheckMosaique != null) {
					btnCheckMosaique.setEnabled(false);
				}
				if (btnRadioNonRendu != null) {
					btnRadioNonRendu.setEnabled(false);
				}
				if (btnRadioNormal != null) {
					btnRadioNormal.setEnabled(false);
				}
				if (btnRadioAnomal != null) {
					btnRadioAnomal.setEnabled(false);
				}
				if (btnRadioEchec != null) {
					btnRadioEchec.setEnabled(false);
				}
				if (btnRadioAnnule != null) {
					btnRadioAnnule.setEnabled(false);
				}
				if (tCommentaire != null) {
					tCommentaire.setEditable(false);
				}
				if (tFormule != null) {
					tFormule.setEditable(false);
				}
				if (btnRadioEquilibre != null) {
					btnRadioEquilibre.setEnabled(false);
				}
				if (btnRadioDesequilibre != null) {
					btnRadioDesequilibre.setEnabled(false);
				}
				if (btnRadioHMere != null) {
					btnRadioHMere.setEnabled(false);
				}
				if (btnRadioHPere != null) {
					btnRadioHPere.setEnabled(false);
				}
				if (btnRadioNHMere != null) {
					btnRadioNHMere.setEnabled(false);
				}
				if (btnRadioNHPere != null) {
					btnRadioNHPere.setEnabled(false);
				}
				if (btnRadioH2 != null) {
					btnRadioH2.setEnabled(false);
				}
				if (btnRadioDeNovo != null) {
					btnRadioDeNovo.setEnabled(false);
				}
				if (btnRadioNonVerif != null) {
					btnRadioNonVerif.setEnabled(false);
				}
				for (int i = 0; i < 24; i++) {
					if (btnCheckChromosome[i] != null) {
						btnCheckChromosome[i].setEnabled(false);
					}
				}
			}

			if (btnGenererFormule != null) {
				btnGenererFormule.setEnabled(false);
			}
			if (dVerification != null) {
				dVerification.getControl().setEditable(false);
			}
			if (dRedaction != null) {
				dRedaction.getControl().setEditable(false);
			}
			if (btnCoherance != null) {
				btnCoherance.setEnabled(false);
			}
			if (btnParentOnt != null) {
				btnParentOnt.setEnabled(false);
			}
			if (btnParentOntPas != null) {
				btnParentOntPas.setEnabled(false);
			}
			if (btnRechercheRemanChezParent != null) {
				btnRechercheRemanChezParent.setEnabled(false);
			}
			if (tANoter != null) {
				tANoter.setEditable(false);
			}
			if (tResolution != null) {
				tResolution.setEditable(false);
			}
			if (comboTypePlanExp != null) {
				comboTypePlanExp.getCombo().setEnabled(false);
			}
			if (comboVerificateur != null) {
				comboVerificateur.getCombo().setEnabled(false);
			}
			if (btnRedige != null) {
				btnRedige.setEnabled(false);
			}
			if (btnVerifie != null) {
				btnVerifie.setEnabled(false);
			}
			if (btnAjouterVerifBM != null) {
				btnAjouterVerifBM.setEnabled(false);
			}
			if (btnAjouterVerifFish != null) {
				btnAjouterVerifFish.setEnabled(false);
			}
			if (comboContamination != null) {
				comboContamination.setEnabled(false);
			}
			if (btnRadioSexeF != null) {
				btnRadioSexeF.setEnabled(false);
			}
			if (btnRadioSexeNA != null) {
				btnRadioSexeNA.setEnabled(false);
			}
			if (btnRadioSexeM != null) {
				btnRadioSexeM.setEnabled(false);
			}
			if (tNbMqExclus != null) {
				tNbMqExclus.getControl().setEnabled(false);
			}
			if (tNbMqNonInfo != null) {
				tNbMqNonInfo.getControl().setEnabled(false);
			}
			if (tNbMqInfo != null) {
				tNbMqInfo.getControl().setEnabled(false);
			}
			if (btnSigne != null) {
				btnSigne.setEnabled(false);
			}
			for (Entry<Integer, FormattedText> dReaFish : dRealisationFish.entrySet()) {
				if (dReaFish != null && dReaFish.getValue() != null && !dReaFish.getValue().getControl().isDisposed()) {

					dReaFish.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<Integer, Button> btConfFish : btConfirmeFish.entrySet()) {
				if (btConfFish != null && btConfFish.getValue() != null && !btConfFish.getValue().isDisposed()) {
					btConfFish.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, Combo> comboOriParentaleFish : comboOrigineParentaleFish.entrySet()) {
				if (comboOriParentaleFish != null && comboOriParentaleFish.getValue() != null && !comboOriParentaleFish.getValue().isDisposed()) {
					comboOriParentaleFish.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, Combo> comboOriParentalebm : comboOrigineParentaleBM.entrySet()) {
				if (comboOriParentalebm != null && comboOriParentalebm.getValue() != null && !comboOriParentalebm.getValue().isDisposed()) {
					comboOriParentalebm.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, Button> bAjSondeFish : bAjouterSondeFish.entrySet()) {
				if (bAjSondeFish != null && bAjSondeFish.getValue() != null && !bAjSondeFish.getValue().isDisposed()) {
					bAjSondeFish.getValue().setEnabled(false);
				}
			}
			for (Entry<String, Combo> bAnoConfztb : comboAnoConfirmeeztb.entrySet()) {
				if (bAnoConfztb != null && bAnoConfztb.getValue() != null && !bAnoConfztb.getValue().isDisposed()) {
					bAnoConfztb.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, Button> bAjZoneHorsBM : bAjouterZoneHorsBM.entrySet()) {
				if (bAjZoneHorsBM != null && bAjZoneHorsBM.getValue() != null && !bAjZoneHorsBM.getValue().isDisposed()) {
					bAjZoneHorsBM.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, Button> bAjZoneDansBM : bAjouterZoneDansBM.entrySet()) {
				if (bAjZoneDansBM != null && bAjZoneDansBM.getValue() != null && !bAjZoneDansBM.getValue().isDisposed()) {
					bAjZoneDansBM.getValue().setEnabled(false);
				}
			}
			for (Entry<String, Button> bAnoConfef : bAnoConfirmeeef.entrySet()) {
				if (bAnoConfef != null && bAnoConfef.getValue() != null && !bAnoConfef.getValue().isDisposed()) {
					bAnoConfef.getValue().setEnabled(false);
				}
			}
			for (Entry<Integer, FormattedText> dReabm : dRealisationBM.entrySet()) {
				if (dReabm != null && dReabm.getValue() != null && !dReabm.getValue().getControl().isDisposed()) {
					dReabm.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<Integer, FormattedText> tDebAVqPCR : tDebutAVqPCR.entrySet()) {
				if (tDebAVqPCR != null && tDebAVqPCR.getValue() != null && !tDebAVqPCR.getValue().getControl().isDisposed()) {

					tDebAVqPCR.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<Integer, FormattedText> tFinPCR : tFinAVqPCR.entrySet()) {
				if (tFinPCR != null && tFinPCR.getValue() != null && !tFinPCR.getValue().getControl().isDisposed()) {
					tFinPCR.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tDebztb : tDebutztb.entrySet()) {
				if (tDebztb != null && tDebztb.getValue() != null && !tDebztb.getValue().getControl().isDisposed()) {
					tDebztb.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tFztb : tFinztb.entrySet()) {
				if (tFztb != null && tFztb.getValue() != null && !tFztb.getValue().getControl().isDisposed()) {
					tFztb.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tTztb : tTailleztb.entrySet()) {
				if (tTztb != null && tTztb.getValue() != null && !tTztb.getValue().getControl().isDisposed()) {
					tTztb.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tNbSiSonde1ef : tNbSignauxSonde1ef.entrySet()) {
				if (tNbSiSonde1ef != null && tNbSiSonde1ef.getValue() != null && !tNbSiSonde1ef.getValue().getControl().isDisposed()) {
					tNbSiSonde1ef.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tNbSiSonde2ef : tNbSignauxSonde2ef.entrySet()) {
				if (tNbSiSonde2ef != null && tNbSiSonde2ef.getValue() != null && !tNbSiSonde2ef.getValue().getControl().isDisposed()) {
					tNbSiSonde2ef.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tnbPhoto : tnbPhotoef.entrySet()) {
				if (tnbPhoto != null && tnbPhoto.getValue() != null && !tnbPhoto.getValue().getControl().isDisposed()) {
					tnbPhoto.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tnNoyauxef : tnbNoyauxef.entrySet()) {
				if (tnNoyauxef != null && tnNoyauxef.getValue() != null && !tnNoyauxef.getValue().getControl().isDisposed()) {
					tnNoyauxef.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<String, FormattedText> tnbMitef : tnbMitoseef.entrySet()) {
				if (tnbMitef != null && tnbMitef.getValue() != null && !tnbMitef.getValue().getControl().isDisposed()) {
					tnbMitef.getValue().getControl().setEditable(false);
				}
			}
			for (Entry<Integer, Combo> btConfBM : comboConfirmeBM.entrySet()) {
				if (btConfBM != null && btConfBM.getValue() != null && !btConfBM.getValue().isDisposed()) {
					btConfBM.getValue().setEnabled(false);
				}
			}

			for (Entry<Integer, Text> tTechBM : tTechniqueBM.entrySet()) {
				if (tTechBM != null && tTechBM.getValue() != null && !tTechBM.getValue().isDisposed()) {
					tTechBM.getValue().setEditable(false);
				}
			}
			for (Entry<Integer, Text> tGeneRqPCR : tGeneRefqPCR.entrySet()) {
				if (tGeneRqPCR != null && tGeneRqPCR.getValue() != null && !tGeneRqPCR.getValue().isDisposed()) {
					tGeneRqPCR.getValue().setEditable(false);
				}
			}
			for (Entry<Integer, Text> tGeneAVBM : tGeneAVerifBM.entrySet()) {
				if (tGeneAVBM != null && tGeneAVBM.getValue() != null && !tGeneAVBM.getValue().isDisposed()) {
					tGeneAVBM.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tNomPztb : tNomPosztb.entrySet()) {
				if (tNomPztb != null && tNomPztb.getValue() != null && !tNomPztb.getValue().isDisposed()) {
					tNomPztb.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tExPosztb : tExonPosztb.entrySet()) {
				if (tExPosztb != null && tExPosztb.getValue() != null && !tExPosztb.getValue().isDisposed()) {
					tExPosztb.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tS1ef : tSonde1ef.entrySet()) {
				if (tS1ef != null && tS1ef.getValue() != null && !tS1ef.getValue().isDisposed()) {
					tS1ef.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tlocSnde1ef : tlocSonde1ef.entrySet()) {
				if (tlocSnde1ef != null && tlocSnde1ef.getValue() != null && !tlocSnde1ef.getValue().isDisposed()) {
					tlocSnde1ef.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tSnde2ef : tSonde2ef.entrySet()) {
				if (tSnde2ef != null && tSnde2ef.getValue() != null && !tSnde2ef.getValue().isDisposed()) {
					tSnde2ef.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tlocSde2ef : tlocSonde2ef.entrySet()) {
				if (tlocSde2ef != null && tlocSde2ef.getValue() != null && !tlocSde2ef.getValue().isDisposed()) {
					tlocSde2ef.getValue().setEditable(false);
				}
			}
			for (Entry<String, Text> tV2ef : tVersion2ef.entrySet()) {
				if (tV2ef != null && tV2ef.getValue() != null && !tV2ef.getValue().isDisposed()) {
					tV2ef.getValue().setEditable(false);
				}
			}

			if (btnGenererResultat != null) {
				btnGenererResultat.setEnabled(false);
			}
			// caryo
			if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
				if (tResolutionCaryo != null) {
					tResolutionCaryo.setEnabled(false);
				}
				if (btnMarquage != null) {
					for (String mq : ApplicationContexte.marquageCaryo) {
						btnMarquage.get(mq).setEnabled(false);
					}
				}

				if (tMitosesClassees != null) {
					tMitosesClassees.getControl().setEditable(false);
				}
				if (tMitosesExaminees != null) {
					tMitosesExaminees.getControl().setEditable(false);
				}
				if (tColonies != null) {
					tColonies.getControl().setEditable(false);
				}
				if (tChambresCultures != null) {
					tChambresCultures.getControl().setEditable(false);
				}
				if (tNbApresED != null) {
					tNbApresED.getControl().setEditable(false);
				}
				if (tNbApresCult != null) {
					tNbApresCult.getControl().setEditable(false);
				}
				if (cIndexMito != null) {
					cIndexMito.setEnabled(false);
				}
				if (clChr != null) {
					clChr.setEnabled(false);
				}
				if (cCytoplasme != null) {
					cCytoplasme.setEnabled(false);
				}
				if (cMitosesEclat != null) {
					cMitosesEclat.setEnabled(false);
				}
				if (cBandeR != null) {
					cBandeR.setEnabled(false);
				}
				if (cBandeG != null) {
					cBandeG.setEnabled(false);
				}
				if (tResolutionCaryoTech != null) {
					tResolutionCaryoTech.setEnabled(false);
				}
				if (tFormuleTech != null) {
					tFormuleTech.setEditable(false);
				}
				if (tRemarqueTech != null) {
					tRemarqueTech.setEditable(false);
				}
				if (comboTechChoc != null) {
					comboTechChoc.getCombo().setEnabled(false);
				}
				if (comboTechDenat != null) {
					comboTechDenat.getCombo().setEnabled(false);
				}
				if (comboTechEtalement != null) {
					comboTechEtalement.getCombo().setEnabled(false);
				}
				if (comboTechMiseEnCult != null) {
					comboTechMiseEnCult.getCombo().setEnabled(false);
				}
			}
			if (btnPlusFish != null) {
				btnPlusFish.setEnabled(false);
			}
			if (comboTypeFish != null) {
				comboTypeFish.setEnabled(false);
			}
			// FISH
			if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5)) {

				if (tSondeFish != null) {
					tSondeFish.setEditable(false);
				}
				if (tMotifFish != null) {
					tMotifFish.setEditable(false);
				}
				if (tNbMitoseFish != null) {
					tNbMitoseFish.getControl().setEditable(false);
				}
				if (tNbNoyauxFish != null) {
					tNbNoyauxFish.getControl().setEditable(false);
				}
			}
		} else {
			btnDossierUrgent.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnDossierUrgent"));
			tUrgent.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tUrgent"));
			comboTypeAnalyse.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTypeAnalyse"));

			if (comboTechnicienne != null) {
				comboTechnicienne.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne"));
			}
			tUFExec.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tUFExec"));

			if (dateTechnique != null) {
				dateTechnique.getControl().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateTechnique"));
			}

			if (comboContamination != null) {
				comboContamination.setEnabled(false);
			}
			if (btnRadioSexeF != null) {
				btnRadioSexeF.setEnabled(false);
			}
			if (btnRadioSexeNA != null) {
				btnRadioSexeNA.setEnabled(false);
			}
			if (btnRadioSexeM != null) {
				btnRadioSexeM.setEnabled(false);
			}
			if (tNbMqExclus != null) {
				tNbMqExclus.getControl().setEnabled(false);
			}
			if (tNbMqNonInfo != null) {
				tNbMqNonInfo.getControl().setEnabled(false);
			}
			if (tNbMqInfo != null) {
				tNbMqInfo.getControl().setEnabled(false);
			}
			if (btnSigne != null) {
				btnSigne.setEnabled(false);
			}

			if (dateRendu != null) {
				if (btnSigne != null && resultat.getSignataire() != null) {
					// signataire ou Magali ou Marie Laure
					btnSigne.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnSigne") && (ApplicationContexte.getInstance().getUtilisateur().getIdUtilisateur() == resultat.getSignataire().getIdUtilisateur() || ApplicationContexte.getInstance().getUtilisateur().getIdUtilisateur() == 8 || ApplicationContexte.getInstance().getUtilisateur().getIdUtilisateur() == 111));
				}
				dateRendu.getControl().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateRendu"));
				if (comboTypeRenduNb != null) {
					comboTypeRenduNb.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTypeRendu"));
				}
				if (comboTypeRenduStr != null) {
					comboTypeRenduStr.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTypeRendu"));
				}
				if (comboSignataire != null) {
					comboSignataire.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboSignataire"));
				}
				if (btnCheckMosaique != null) {
					btnCheckMosaique.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnCheckMosaique"));
				}
				if (btnRadioNonRendu != null) {
					btnRadioNonRendu.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioNormal != null) {
					btnRadioNormal.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioAnomal != null) {
					btnRadioAnomal.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioEchec != null) {
					btnRadioEchec.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioAnnule != null) {
					btnRadioAnnule.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}

				if (tCommentaire != null) {
					tCommentaire.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tCommentaire"));
				}
				if (tFormule != null) {
					tFormule.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tFormule"));
				}
				if (btnRadioEquilibre != null) {
					btnRadioEquilibre.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioDesequilibre != null) {
					btnRadioDesequilibre.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat"));
				}
				if (btnRadioHMere != null) {
					btnRadioHMere.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioHPere != null) {
					btnRadioHPere.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioNHMere != null) {
					btnRadioNHMere.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioNHPere != null) {
					btnRadioNHPere.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioH2 != null) {
					btnRadioH2.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioDeNovo != null) {
					btnRadioDeNovo.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				if (btnRadioNonVerif != null) {
					btnRadioNonVerif.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite"));
				}
				for (int i = 0; i < 24; i++) {

					if (btnCheckChromosome[i] != null) {

						btnCheckChromosome[i].setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnCheckChromosomes"));
					}
				}
			}

			if (btnGenererResultat != null) {
				btnGenererResultat.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnGenererResultat"));
			}
			if (btnGenererCompteRendu != null) {
				btnGenererCompteRendu.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnGenererResultat"));
			}
			if (btnAjouterUnResultat != null) {
				btnAjouterUnResultat.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "resultat"));
			}

			if (btnGenererFormule != null) {
				btnGenererFormule.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tCommentaire"));
			}

			// caryo
			if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 1 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 7)) {
				if (tResolutionCaryo != null) {
					tResolutionCaryo.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tResolutionCaryo"));
				}
				if (btnMarquage != null) {
					for (String mq : ApplicationContexte.marquageCaryo) {
						btnMarquage.get(mq).setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnMarquage"));
					}
				}
				if (tMitosesClassees != null) {
					tMitosesClassees.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tMitosesClassees"));
				}
				if (tMitosesExaminees != null) {
					tMitosesExaminees.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tMitosesExaminees"));
				}
				if (tColonies != null) {
					tColonies.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tColonies"));
				}
				if (tChambresCultures != null) {
					tChambresCultures.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tColonies"));
				}
				if (tNbApresED != null) {
					tNbApresED.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tColonies"));
				}
				if (tNbApresCult != null) {
					tNbApresCult.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tColonies"));
				}
				if (cIndexMito != null) {
					cIndexMito.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "cIndexMito"));
				}
				if (clChr != null) {
					clChr.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "clChr"));
				}
				if (cCytoplasme != null) {
					cCytoplasme.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "cCytoplasme"));
				}
				if (cMitosesEclat != null) {
					cMitosesEclat.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "cMitosesEclat"));
				}
				if (cBandeR != null) {
					cBandeR.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "cBandeR"));
				}
				if (cBandeG != null) {
					cBandeG.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "cBandeG"));
				}
				if (tResolutionCaryoTech != null) {
					tResolutionCaryoTech.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tResolutionCaryoTech"));
				}
				if (tFormuleTech != null) {
					tFormuleTech.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tFormuleTech"));
				}
				if (tRemarqueTech != null) {
					tRemarqueTech.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tRemarqueTech"));
				}
				if (comboTechChoc != null) {
					comboTechChoc.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne"));
				}
				if (comboTechDenat != null) {
					comboTechDenat.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne"));
				}
				if (comboTechEtalement != null) {
					comboTechEtalement.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne"));
				}
				if (comboTechMiseEnCult != null) {
					comboTechMiseEnCult.getCombo().setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTechnicienne"));
				}
			}
			if (btnPlusFish != null) {
				btnPlusFish.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tNbNoyauxFish"));
			}
			if (comboTypeFish != null) {
				comboTypeFish.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tNbNoyauxFish"));
			}
			// FISH
			if (analyse != null && analyse.getTypeAnalyse() != null && (analyse.getTypeAnalyse().getIdTypeAnalyse() == 8 || analyse.getTypeAnalyse().getIdTypeAnalyse() == 5)) {

				if (tSondeFish != null) {
					tSondeFish.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tSondeFish"));
				}
				if (tMotifFish != null) {
					tMotifFish.setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tSondeFish"));
				}
				if (tNbMitoseFish != null) {
					tNbMitoseFish.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tNbMitoseFish"));
				}
				if (tNbNoyauxFish != null) {
					tNbNoyauxFish.getControl().setEditable(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "tNbNoyauxFish"));
				}

			}
			if (analyse != null && analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 4) {
				if (btnAjouterVerifBM != null) {
					btnAjouterVerifBM.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
				}
			}
			if (rbm != null) {

				if (dVerification != null) {
					dVerification.getControl().setEditable(
							DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dVerification") && rbm != null && rbm.getVerificateur() != null && rbm.getVerificateur().equals(ApplicationContexte.getInstance().getUtilisateur()));
				}
				if (comboVerificateur != null) {
					comboVerificateur.getCombo().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboVerificateur"));
				}
				if (btnVerifie != null) {
					btnVerifie.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dVerification") && rbm != null && rbm.getVerificateur() != null
							&& rbm.getVerificateur().equals(ApplicationContexte.getInstance().getUtilisateur()));
				}
				if (btnCoherance != null) {
					btnCoherance.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
				}
				if (btnParentOnt != null) {
					btnParentOnt.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
				}
				if (btnParentOntPas != null) {
					btnParentOntPas.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
				}
				if (btnRechercheRemanChezParent != null) {
					btnRechercheRemanChezParent.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
				}
				for (Entry<Integer, Combo> comboOriParentalebm : comboOrigineParentaleBM.entrySet()) {
					if (comboOriParentalebm != null) {
						comboOriParentalebm.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, Combo> bAnoConfztb : comboAnoConfirmeeztb.entrySet()) {
					if (bAnoConfztb != null) {
						bAnoConfztb.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, Button> bAjZoneHorsBM : bAjouterZoneHorsBM.entrySet()) {
					if (bAjZoneHorsBM != null) {
						bAjZoneHorsBM.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, Button> bAjZoneDansBM : bAjouterZoneDansBM.entrySet()) {
					if (bAjZoneDansBM != null) {
						bAjZoneDansBM.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, FormattedText> dReabm : dRealisationBM.entrySet()) {
					if (dReabm != null) {
						dReabm.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, FormattedText> tDebAVqPCR : tDebutAVqPCR.entrySet()) {
					if (tDebAVqPCR != null) {
						tDebAVqPCR.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, FormattedText> tFinPCR : tFinAVqPCR.entrySet()) {
					if (tFinPCR != null) {
						tFinPCR.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, FormattedText> tDebztb : tDebutztb.entrySet()) {
					if (tDebztb != null) {
						tDebztb.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, FormattedText> tFztb : tFinztb.entrySet()) {
					if (tFztb != null) {
						tFztb.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, FormattedText> tTztb : tTailleztb.entrySet()) {
					if (tTztb != null) {
						tTztb.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, Combo> btConfBM : comboConfirmeBM.entrySet()) {
					if (btConfBM != null) {
						btConfBM.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}

				for (Entry<Integer, Text> tTechBM : tTechniqueBM.entrySet()) {
					if (tTechBM != null) {
						tTechBM.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<Integer, Text> tGeneRqPCR : tGeneRefqPCR.entrySet()) {
					if (tGeneRqPCR != null) {
						tGeneRqPCR.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<Integer, Text> tGeneAVBM : tGeneAVerifBM.entrySet()) {
					if (tGeneAVBM != null) {
						tGeneAVBM.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, Text> tNomPztb : tNomPosztb.entrySet()) {
					if (tNomPztb != null) {
						tNomPztb.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}
				for (Entry<String, Text> tExPosztb : tExonPosztb.entrySet()) {
					if (tExPosztb != null) {
						tExPosztb.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduBM"));
					}
				}

			}
			if (renduPuce != null || rbm != null || rf != null) {
				if (dRedaction != null) {
					dRedaction.getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction"));
				}
				if (btnRedige != null) {
					btnRedige.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dRedaction"));
				}
			}
			if (renduPuce != null) {
				if (tANoter != null) {
					tANoter.setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce"));
				}
				if (tResolution != null) {
					tResolution.setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce"));
				}
				if (comboTypePlanExp != null) {
					comboTypePlanExp.getCombo().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce"));
				}
			}

			if (analyse != null && analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 2) {
				if (btnAjouterVerifFish != null) {
					btnAjouterVerifFish.setEnabled(DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
				}
			}

			if (analyse != null && analyse.getTypeAnalyse() != null && analyse.getTypeAnalyse().getIdTypeAnalyse() == 6) {

				boolean peutmod = DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "champMicroSat");
				if (comboContamination != null) {
					comboContamination.setEnabled(peutmod);
				}
				if (btnRadioSexeF != null) {
					btnRadioSexeF.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "champPrenatal"));
				}
				if (btnRadioSexeNA != null) {
					btnRadioSexeNA.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "champPrenatal"));
				}
				if (btnRadioSexeM != null) {
					btnRadioSexeM.setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "champPrenatal"));
				}
				if (tNbMqExclus != null) {
					tNbMqExclus.getControl().setEnabled(peutmod);
				}
				if (tNbMqNonInfo != null) {
					tNbMqNonInfo.getControl().setEnabled(peutmod);
				}
				if (tNbMqInfo != null) {
					tNbMqInfo.getControl().setEnabled(peutmod);
				}
			}

			if (rf != null) {
				for (Entry<Integer, FormattedText> dReaFish : dRealisationFish.entrySet()) {
					if (dReaFish != null) {
						dReaFish.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<Integer, Button> btConfFish : btConfirmeFish.entrySet()) {
					if (btConfFish != null) {
						btConfFish.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<Integer, Combo> comboOriParentaleFish : comboOrigineParentaleFish.entrySet()) {
					if (comboOriParentaleFish != null) {
						comboOriParentaleFish.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<Integer, Button> bAjSondeFish : bAjouterSondeFish.entrySet()) {
					if (bAjSondeFish != null) {
						bAjSondeFish.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Button> bAnoConfef : bAnoConfirmeeef.entrySet()) {
					if (bAnoConfef != null) {
						bAnoConfef.getValue().setEnabled(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}

				for (Entry<String, FormattedText> tNbSiSonde1ef : tNbSignauxSonde1ef.entrySet()) {
					if (tNbSiSonde1ef != null) {
						tNbSiSonde1ef.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, FormattedText> tNbSiSonde2ef : tNbSignauxSonde2ef.entrySet()) {
					if (tNbSiSonde2ef != null) {
						tNbSiSonde2ef.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, FormattedText> tnbPhoto : tnbPhotoef.entrySet()) {
					if (tnbPhoto != null) {
						tnbPhoto.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, FormattedText> tnNoyauxef : tnbNoyauxef.entrySet()) {
					if (tnNoyauxef != null) {
						tnNoyauxef.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, FormattedText> tnbMitef : tnbMitoseef.entrySet()) {
					if (tnbMitef != null) {
						tnbMitef.getValue().getControl().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Text> tS1ef : tSonde1ef.entrySet()) {
					if (tS1ef != null) {
						tS1ef.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Text> tlocSnde1ef : tlocSonde1ef.entrySet()) {
					if (tlocSnde1ef != null) {
						tlocSnde1ef.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Text> tSnde2ef : tSonde2ef.entrySet()) {
					if (tSnde2ef != null) {
						tSnde2ef.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Text> tlocSde2ef : tlocSonde2ef.entrySet()) {
					if (tlocSde2ef != null) {
						tlocSde2ef.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
				for (Entry<String, Text> tV2ef : tVersion2ef.entrySet()) {
					if (tV2ef != null) {
						tV2ef.getValue().setEditable(DroitServiceImpl.getInstance().peutCreerByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduFish"));
					}
				}
			}
			addDirtyListener();
		}

		composite.pack();
		sc1.redraw();
	}

	public boolean verifierChamp() {

		ISelection selectionTypeAna = comboTypeAnalyse.getSelection();
		if (selectionTypeAna.isEmpty() && DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "comboTypeAnalyse")) {
			MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champs obligatoire manquant", "Onglet " + this.getTabItem().getText() + " : Champs obligatoire manquantt : Type d'analyse");
			return false;
		}

		if (dateTechnique != null && dateTechnique.getValue() != null && DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "dateTechnique")) {
			String message = ApplicationContexte.getInstance().valideDate((Date) dateTechnique.getValue());
			if (!message.isEmpty()) {
				MessageDialog.openError(Display.getCurrent().getActiveShell(), "Erreur de format", "Onglet " + this.getTabItem().getText() + " : Erreur de format : Date de la technique : " + message);
				return false;
			}

		}
		return true;
	}

	private boolean verifierChampRenduBiomol() {
		// TODO Auto-generated method stub
		return true;
	}

	private boolean verifierChampRenduFish() {
		// TODO Auto-generated method stub
		return true;
	}

	private boolean verifierChampRenduPuce() {
		if (tResolution.getText() == null || tResolution.getText().isEmpty() && DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "renduPuce")) {
			MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champs obligatoire manquant", "Onglet " + this.getTabItem().getText() + " : Champs obligatoire manquant : Résolution de la puce");
			return false;
		}
		return true;
	}

	private boolean verifierChampResultat() {
		if (!btnRadioNonRendu.getSelection() && !btnRadioAnnule.getSelection() && !btnRadioEchec.getSelection() && !btnRadioAnomal.getSelection() && !btnRadioNormal.getSelection()
				&& DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioResultat")) {
			MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champs obligatoire manquant", "Onglet " + this.getTabItem().getText() + " : Champs obligatoire manquant : Résultat non indiqué (normal/anormal/non rendu/echec/annulé ...)");
			return false;
		}
		if (btnRadioAnomal.getSelection() && (!btnRadioH2.getSelection() && !btnRadioHMere.getSelection() && !btnRadioNHMere.getSelection() && !btnRadioHPere.getSelection() && !btnRadioNHPere.getSelection() && !btnRadioDeNovo.getSelection() && !btnRadioNonVerif.getSelection())
				&& DroitServiceImpl.getInstance().peutModifierByUtilisateurAndChamp(ApplicationContexte.getInstance().getUtilisateur(), "btnRadioHerite")) {
			MessageDialog.openError(Display.getCurrent().getActiveShell(), "Champs obligatoire manquant", "Onglet " + this.getTabItem().getText() + " : Champs obligatoire manquant : Transmission non indiquée");
			return false;
		}
		return true;
	}
}
